目录
一 DCL
1.权限级别
2.MySQL用户管理
==创建用户==
?==删除用户==
==mysql权限管理==
==MySQL权限(授权、收权)==
二 日志
1.日志分类:
2.Error Log 错误日志
3.Binary Log(二进制日记) ?
4.SlowQuery Log
1.权限级别
1. Global level 所有库,所有表的权限。
2. Database level 某个数据库中的所有表的权限。
3 .Table level 库中的某个表的权限
4. Column level 表中的某个字段,的权限。
2.MySQL用户管理
==创建用户==
创建用户:CREATE USER user1@'localhost' IDENTIFIED BY 'QianFeng@123456';
验证:select * from mysql.user\G;
==删除用户==
mysql> DROP USER 'user1'@'localhost';
操作提示:
mysql> selece * from mysql.user\G; //查看每个用户列
mysql> drop 'user1'@'localhost';
查看数据库用户:
mysql> select * flrom mysql.user\G; //查看每个用户详情列
或者:myaql> select user from mysql.user; //直接查看用户名列表
==mysql权限管理==
语法:grant 权限列表 on 库名.表名 to '用户名'@'客户端主机' [identified by '密码' with option参数];
==MySQL权限(授权、收权)==
1.授予权限:
==授权目标==
授予用户admin3 对 k1库 . 所有的表,具有所有权限(不包含授权)
mysql> GRANT ALL ON k1.* TO admin3@'%' IDENTIFIED BY 'QianFeng@123456';
==授权示例==
(1)准备测试账号:
root账号创建:CREATE USER admin3@'%' IDENTIFIED BY 'QianFeng@123';
(2)授权账户:
root 账户 授权:GRANT ALL ON k1.* TO admin3@'%' IDENTIFIED BY 'QianFeng@123'
(3)使用测试账号操作数据库
登录admin账号:mysql> mysql -uadmin -p'QianFeng@123456';
查看数据库:mysql> show databases;
创建k1库:mysql> create database k1;
试试创建别的库:mysql> create dsatabase k2;
2回收权限:
==查看权限==
查看自己的权限:mysql> show grants\G;
查看别人的权限mysql> show grants for admin3@'%'\G;
==回收权限REVOKE==(revoke)
语法:REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
示例:REVOKE ALL PRIVILEGES ON k1.* FROM admin3@’%’; //回收所有权限
==删除用户的版本问题==
5.6之前,先 revoke all privilege 再 drop user
5.7之后,直接 drop user
二 日志
1.日志分类:
1 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log
2 通用查询日志:所有的查询都记下来。
3 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。
4 中继日志:读取主服务器的binlog,在本地回放。保持一致。
5 slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
6 DDL log: 定义语句的日志。
2.Error Log 错误日志
进入主配置文件,观察日志是否启动。
vim /etc/my.cnf
log-error=/var/log/mysqld.log
该字段,标记是否启动日志,以及日志位置。如果哪天mysql服务起不来了,来这个日志文件看看。
3.Binary Log(二进制日记)
==默认没有开启,二进制日志
配置文件位置:/etc/my.con
==启动二进制日志:
# vim /etc/my.cnf
log_bin 添加该字段。指启动二进制日志
server-id=2 群集问题,必须指定该主机的序号。数字随意# systemctl restart mysqld 重启数据库
==测试==:
1.查看二进制日志文件当前状态:
ls /var/lib/mysql/*bin* #查询二进制文件生成完成。
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 #查看二进制文件日志。后续讲解# at 123 #找到一个记录位置
2 进入数据库,进行数据操作
创库,创表,创数据(过程略)
3 完成二进制日志启动,查询测试
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001
找到刚才创建的记录即可。
4.SlowQuery Log
==默认慢查询日志未开启
==开启慢查询日志功能
# vim /etc/my.cnf
加入下面2行配置
slow_query_log=1
启动慢查询日志
这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。long_query_time=3
当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
重启服务器
#systemctl restart mysqld
==查看慢查询日志文件
# ll /var/lib/mysql/*slow*
查看日志文件已经生成
==模拟慢查询
mysql>SELECT BENCHMARK(500000000,2*3);
基本测试语句,测试一个超长时间的查询。
课后作业:收集数据库压力测试工具信息。(面试题)
==验证慢查询日志
# tail /var/lib/mysql/localhost-slow.log
观察长查询日志记录,记录了刚才超长的查询结果。
稍后反馈给开发部,进行优化。