用户的操作
创建用户
8.0以前
grant all on *.* to cao@'192.168.0.%' identified by '123';
8.0以后
create user cao@'192.168.0.%' identified by '123';
select user,host from mysql.user;
修改用户密码
alter user cao@'192.168.0.%' identified by '123456';
删除用户
drop user cao@'192.168.0.%';
用户权限的操作
ALL(常用的所有)
with grant option(给其他用户授权的权限)
常用的权限:
Select:确定用户是否可以通过SELECT命令选择数据
Insert:确定用户是否可以通过INSERT命令插入数据
Update:确定用户是否可以通过UPDATE命令修改现有数据
Delete:确定用户是否可以通过DELETE命令删除现有数据
Create:确定用户是否可以创建新的数据库和表
Drop:确定用户是否可以删除现有数据库和表
Reload:确定用户是否可以执行刷新和重新加载MySQL所用各种内部缓存的特定命令,包括日志、权限、主机、查询和表
Shutdown:确定用户是否可以关闭MySQL服务器,将此权限提供给root账户之外的任何用户时,都应当非常谨慎
Process:确定用户是否可以通过SHOW
File:确定用户是否可以执行SELECT INTO OUTFILE和LOAD DATA INFILE命令
Grant:确定用户是否可以将已经授予给该用户自己的权限再授予其他用户,例如,如果用户可以插入、选择和删除foo数据库中的信息,并且授予了GRANT权限,则该用户就可以将其任何或全部权限授予系统中的任何其他用户
References:目前只是某些未来功能的占位符,现在没有作用
Index:确定用户是否可以创建和删除表索引
Alter:确定用户是否可以重命名和修改表结构
Show_db:确定用户是否可以查看服务器上所有数据库的名字,包括用户拥有足够访问权限的数据库,可以考虑对所有用户禁用这个权限,除非有特别不可抗拒的原因
Super:确定用户是否可以执行某些强大的管理功能,例如通过KILL命令删除用户进程,使用SET GLOBAL修改全局MySQL变量,执行关于复制和日志的各种命令
Create_tmp_table:确定用户是否可以创建临时表
Lock_tables:确定用户是否可以使用LOCK
Execute:确定用户是否可以执行存储过程,此权限只在MySQL 5.0及更高版本中有意义
Repl_slave:确定用户是否可以读取用于维护复制数据库环境的二进制日志文件,此用户位于主系统中,有利于主机和客户机之间的通信
Repl_client:确定用户是否可以确定复制从服务器和主服务器的位置
Create_view:确定用户是否可以创建视图,此权限只在MySQL 5.0及更高版本中有意义
Show_view:确定用户是否可以查看视图或了解视图如何执行,此权限只在MySQL 5.0及更高版本中有意义 Create_routine:确定用户是否可以更改或放弃存储过程和函数,此权限是在MySQL 5.0中引入的 Alter_routine:确定用户是否可以修改或删除存储函数及函数,此权限是在MySQL 5.0中引入的 Create_user:确定用户是否可以执行CREATE
Event:确定用户能否创建、修改和删除事件,这个权限是MySQL 5.1.6新增的
Trigger:确定用户能否创建和删除触发器,这个权限是MySQL 5.1.6新增的
Create_tablespace: 创建表的空间
授权命令
grant all on *.* to cao@'192.168.0.%' identified by '123' with grant option;
-- grant 权限 on 作用目标(用于管理哪些库或者表或者具体的文件) to 用户 identified by 密码 特殊权限;
show grants for cao@'192.168.0.%';
回收权限
revoke delete on wordpress.* from cao@'192.168.0.%';
数据的操作
使用工具Navicat pemium
查看版本号
dos下:
mysql --version
进入MySQL里面:
select version();
连接
mysql -u root -p
然后输入密码
连接错误次数过多时,禁止客户机连接解决办法
--使用命令刷新hosts
mysqladmin -uroot -p123 flush-hosts
--修改配置文件连接数上限
[mysqld]下面添加 max_connect_errors=1000
创建
CREATE TABLE runoob_tbl
增加
insert into user_code (index_id,identification,residue) values ('0','192.168.1.1','5')
删除
删除表:DROP TABLE test_tb1
删除具体行:DELETE FROM my_test where id = '1'
修改
UPDATE my_test set number = '666' where number = '444'
查询
select residue FROM user_code where index_id = '5'
找到employees表里入职员工时间排名倒数第三的员工所有信息
select * from employees where hire_date = (
select distinct hire_date from employees order by hire_date desc limit 2,1
);
#distinct 去重
#order 排序默认升序,降序为order by hire_date desc
#limit 从一个特定的偏移开始提取记录 索引从0开始,2为第三个1为提取一行
查看mysql 有什么账户列表
进入数据库 mysql -uroot -p
select user.host from mysql.user;
mysqld的三层结构
1、连接层
1.提供连接协议
2.提供用户认证
3.提供连接线程
2、SQL层
1.语法的校验(sql_mod)
2.语义和权限
3.解析
4.优化器根据算法算出代价,从而确认最优语句
5.执行器
6.查询缓存
7.二进制biglog的日志记录
3、存储引擎层
1.从磁盘读取数据页
2.返回给sql层
mysql基本的配置模板
路径是 /etc/my.cnf
书写格式:
[标签]
xxxx=xxxx
服务器标签:[mysqld] [mysqld_safe] [server]
客户端标签:[mysql] [mysqladmin] [mysqldump] [client]
服务端
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
#做主从的服务端id号(1-65535)
server_id=6
port=3306
客户端
[mysql]
socket=/tmp/mysql.sock
配置文件启动顺序
mysqld —help —verbose | grep my.cnf
/etc/my.cnf > /etc/mysql/my.cnf > /usr/local/mysql/etc/my.cnf > ~/.my.cnf
数据库产品(DBMS)
RDBMS
二维表,有严格的行列结构及属性约束,支持更复杂的查询
产品:mysql、oracle、PG
NOSQL
没有严格的行列结构,可伸缩性、可扩展性、性能较高
产品:
key value(Redis、Memcache)
document(MongoDB)
搜索(ES)
wide(Cassandra)
NEWSQL R+N+分布式
产品:spaner、TIDB、polarDB