目录
DCL
权限级别
1. Global level 所有库,所有表的权限。
2. Database level,某个数据库中的所有表的权限。
3 .Table level,库中的某个表的权限
4. Column level 表中的某个字段,的权限。
mysql用户管理
1. 创建用户
CREATE USER 用户名@'主机' IDENTIFIED BY ‘密码’
例: CREATE USER user1@'localhost' IDENTIFIED BY 'QianFeng@123456';
注释:CREATE 创建(关键字) USER 用户(关键字) user1 用户名称(自定义) @ 分隔符(关键字)
‘localhost’ 允许登录的主机 IDENTIFIED BY 身份认证(关键字) ‘QianFeng@123456’ 用户密码
验证:select * from mysql.user\G;
2. 删除用户
DROP USER 'user1'@'localhost';
3. 修改用户密码
root修改自己密码
示例1:# mysqladmin -uroot -p'QianFeng@123456' password 'QianFeng@123';
前提是拥有系统权限
示例2:SET PASSWORD=password('new_password'); //new_password代表新的密码
FLUSH PRIVILEGES; //刷新权限
丢失root用户密码
1.前言:当root用户,忘记了密码。可以使用破解的方式来登录系统。修改密码。
2.修改mysql启动设置
vim /etc/my.cnf
3.重启mysql,无密码登录
重启mysql程序: # systemctl restart mysqld
无密码登录: # mysql -uroot
修改自己的密码
mysql>UPDATE mysql.user SET authentication_string=password('QianFeng@123456789') where user='root' and host='localhost';
mysql> FLUSH PRIVILEGES; //刷新权限
4.修改mysql启动设置 注释掉跳过密码
4. 登录MySQL
mysql -P 3306 -u root -p123 mysql -e ‘show tables’ -h 指定主机名 【默认为localhost】
-P MySQL服务器端口 【默认3306】 大P
-u 指定用户名 【默认root】
-p 指定登录密码 【默认为空密码】
此处mysql为指定登录的数据库
-e 接SQL语句
示例:免登录查询数据库 mysql -uroot -p'QianFeng@123' -hlocalhost -P 3306 mysql -e 'show tables'
mysql权限原理
语法格式: grant 权限列表 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 'QianFeng@123';
==客户端主机: %
192.168.2.% 192.168.2.0网段的所有主机
192.168.2.168 指定主机
localhost 指定主机
==with_option参数: GRANT OPTION 授权选项
mysql权限示例
赋予权限
授权目标
授予admin3 对bbs库 所有的表,具有所有权限(不包含授权)
GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'QianFeng@13910604684';
1.准备测试账户 :CREATE USER admin3@'%' IDENTIFIED BY 'QianFeng@123';
2.授权账户 root账号授权
mysql> GRANT ALL ON bbs.* TO admin3@'%' IDENTIFIED BY 'QianFeng@123';
3.使用测试账户操作数据库
[root@localhost ~]# mysql -uadmin3 -p'QianFeng@123'
mysql> create database bbs;
试试创建别的库
mysql> create database bba;
进入bbs库,创建数据表和插入数据。
回收权限
查看权限:
查看自己的权限:SHOW GRANTS\G; //root账户
查看别人的权限:SHOW GRANTS FOR admin3@'%'\G
回收权限REVOKE
语法:REVOKE 权限列表 ON 数据库名 FROM 用户名@‘客户端主机’
示例: REVOKE ALL PRIVILEGES ON bbs.* FROM admin3@’%’; //回收所有权限
还有一个简单粗暴的方法就是直接删除用户
例:mysql> drop user admin3@'%';
日志
一、日志分类
1 错误日志 :启动,停止,关闭失败报错。rpm安装日志位置 /var/log/mysqld.log
2 通用查询日志:所有的查询都记下来。
3 二进制日志:实现备份,增量备份。只记录改变数据,除了select都记。
4 中继日志:读取主服务器的binlog,在本地回放。保持一致。
5 slow log:慢查询日志,指导调优,定义某一个查询语句,定义超时时间,通过日志提供调优建议给开发人员。
6 DDL log: 定义语句的日志。
二、Error Log
vim /etc/my.cnf 进入主配置文件,观察日志是否启动。
log-error=/var/log/mysqld.log 该字段,标记是否启动日志,以及日志位置。
如果哪天mysql服务起不来了,请来这个日志文件看看。
三、Binary Log
默认没有开启,二进制日志
启动二进制日志
vim /etc/my.cnf //编辑主配置文件
[root@localhost ~]# systemctl restart mysqld //重启数据库
测试
1 查看二进制日志文件当前状态
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 找到一个记录位置 # at 123
2 进入数据库,进行数据操作
创库,创表,创数据
3 完成二进制日志启动,查询测试
mysqlbinlog -v /var/lib/mysql/localhost-bin.000001 //找到刚才创建的记录即可。
四、Slow Query Log
默认慢查询日志未开启
开启慢查询日志功能
vim /etc/my.cnf
slow_query_log=1 启动慢查询日志这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。
long_query_time=3 当SQL语句执行时间超过此数值时也就是3秒,就会被记录到日志中,建议设置为1或者更短。
重启服务器
[root@localhost ~]# systemctl restart mysqld
查看慢查询日志文件
模拟慢查询
验证慢查询日志