DCL
权限管理级别
- Global level:所有库,所有表权限
- Database level:某个数据库中的所有表的权限
- Table level:库中的某个表的权限
- Colmn level:表中的某个字段的权限
Mysql用户管理
- 创建用户:
语法:
create user user1@‘localhost’ identified by ‘ZhongGuo@123’
Create 创建(关键字)
user 用户(关键字)
@ 分隔符 (关键字)
user1 用户名称(自定义)
‘localhost’ 允许登录的主机
Identified by 身份认证(关键字)
‘ZhongGuo@123’ 用户设置密码
- 删除用户:
语法:drop user ‘user1’@‘localhost’ ;
Select user from mysql.user ;
- 修改用户密码
Root修改密码:
Mysqladmin –uroot –p‘123’ password ‘新的密码’;
Set password=password(‘新的密码’);
flush privileges; 刷新权限
123为旧密码
丢失root用户密码
原理:使系统在启动时,不加载密码文件
(1)修改mysql启动设置
Vim /etc/my.cnf
[mysql]
Skip-grant-tables 跳过密码
(2) 重启mysql,无密码登录
Systemctl restart mysql
Mysql -uroot
然后再修改自己的密码
UPDATE mysql.user SET authentication_string=password('ZhongGuo@123') where user='root' and host='localhost';
刷新权限 flush privileges
(3)最后修改MySQL启动设置
(4)注释掉跳过密码
- 登录mysql
MySQL –P 3306 –uroot -p’123’ mysql –e ‘show tables’;
-pmysql服务器端口 默认3306 大P
-u指定用户名 默认root
-p 指定登录密码 默认空密码
Mysql是指定登录的数据库
-e 接SQL语句
- 免登录查询数据库
Mysql –uroot –p‘ZhongGuo@123’ localhost –P 3306 mysql –e ‘show tables’
Mysql权限原理
Grant all on 库名.表名 to ‘用户名’@‘客户端主机’[identified by ‘密码’ with_option 参数];
权限列表
All:所有权限(不包括授权权限)
Select ,update 查询更新
数据库.表名
. :所有库下的所有表
Web.* :web库下的所有表
Web.stu_info :web库下的stu_info表
Grant select (id),insert (name,age) on mydb.mytbl to ‘user8’@’localhost’ identified by ‘ZhongGuo@123’;
某表中一列查询客户端主机
% :所有主机
192.168.2.% :192.168.2.0网段的所有主机
192.168.2.168 :指定主机
Localhost :指定主机
With_option参数 : Grant option :授权选项
Mysql权限示例
- 授权目标
授予user2 对bbs库所有的表,具有所有权限(不包含授权)
Grant all on bbs.* to user2@’%’ identified by ‘ZhongGuo@123’;
创建用户 Crate user user2@’%’ identified by ‘ZhongGuo@123’;
授权账户 grant all on bbs@‘%’ identified by ‘ZhongGuo@123’;
使用其他测试账号操作数据库
MySQL –uuser2 –p‘ZhongGuo@123’ –h IP
能进入bbs库 创建数据表、插入数据, 授权验证成功
- 查看权限
看自己权限:show grants ;
看他人权限; show grants for user2@’%’;
- 回收权限
语法:revoke 权限列表 on 数据库名 from 用户名@‘客户端主机’
Revoke all privileges on bbs.* from user2@’%’;
删除用户
5.6前,先revoke all privilege 再 drop user
5.7后, 直接drop user
日志
- 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log
- 通用查询日志:所有的查询都记下来。
- 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。
- 中继日志:读取主服务器的binlog,在本地回放。保持一致。
- slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
- DDL log: 定义语句的日志。
- Error log
vim /etc/my.cnf 进入主配置文件,观察日志是否启动
log-error-/var/log/mysqld.log 该字段,标记是否启动日志,以及日志位置
- binary log :
默认没有开启二进制日志
启动二进制日志
Vim /etc/my.cnf
Log_bin 添加该字段。指启动二进制日志
Server-id=2 集群问题,必须指定该主机的序号。
Systemctl restart mysqld 重启数据库
查看二进制日志文件当前状态
Ls /var/lib/mysql/bin 查询二进制文件生成完成
Mysqlbinlog –v /var/lib/mysql/localhost-bin.111 查看二进制文件日志
然后进入数据库,进行操作 创库,创表,插数据
完成二进制日志启动,查询结果
Mysqlbinlog –v /var/lib/mysql/localhoat-bin。111
- Slow query log
默认慢查询日志未开启
开启慢查询日志功能
Vim /etc/my.cnf
Slow_query_log=1 启动慢查询日志
Long-query_time=3 当执行时间超过此值,就会被记录到日志中,建议设为1
Systemctl restart mysqld 重启服务器
查看慢查询日志文件
Ll /var/lib/mysql/slow 查看日志文件已生成
模拟慢查询
Select benchmark(50000000,2*3) 测试语句 超常时间查询
验证慢查询日志
Tail /var/lib/mysql/localhost-slow.log 观察长查询日志记录,记录了刚才超长的查询结果。
,进行优化。