一、DCL
数据控制语言,主要用做用户的创建、管理,权限的授予、撤销等操作。
1、权限级别
① Global level:对所有库、所有表的权限;
② Database level:某个数据库中所有表的权限;
③ Table level:库中某个表的权限;
④ Column level:表中某个字段的权限。
2、用户管理
(1) 创建用户
用户的创建和删除等操作,必须要 root 用户才能完成。
语法:create user 用户名@ip identified by 'password';
切换用户登录数据库:
(2) 修改密码
语法:alter user 用户名@ip identified by 'password';
(3) 删除用户
语法:drop user 用户名@ip;
3、权限管理
超管 root 可对普通用户授予权限,使其对数据库有操作权限。
DDL 权限:create、alter、drop…
DML 权限:insert、update、delete
DQL 权限:select
(1) 授予权限
语法:grant 权限名 on 库名.表名 to username@ip;
超管查看用户权限:show grants for username;
普通用户对表的操作,仅限于超管授予的权限
● 授予所有权限:
语法:grant all privileges on 库名.* to 用户名@ip;
* 表示通配该库下的所有表
(2) 撤销权限
语法:revoke 权限名 on 库名.表名 from 用户名@ip;
撤销全部权限:revoke all privileges on 库名.* from 用户名@ip;
(3) 远程登录操作
create user 用户名@'%' identified by 'password';
% 代表通配,表示所有服务器都可以远程登录。% 也可以替换成指定 ip。
grant all privileges on *.* to 用户名@'%' with grant option;
*.* 表示所有库及所有表格
4、视图
映射表单中的一部分数据
创建视图:create view 视图名 as select 列名 from 表名;
(可以加上 where condition 对视图进行条件筛选)
查看视图:select * from 视图名;
对视图进行插入等操作,也会影响到原表。
二、日志
1、日志分类
① 错误日志(Error log):记录 mysql 系统启动、通知、关闭等报错信息;
② 通用查询日志(General query log):记录所有的查询;
③ 二进制日志(Binary log):实现备份,增量备份。只记录改变数据,除了select ;
④ 中继日志(Relay log):读取主服务器的 binlog,在本地回放。保持一致;
⑤ slow log: 慢查询日志,指导调优;
⑥ DDL log: 定义语的日志。
2、Error log
进入主配置文件,观察日志是否启动:vim /etc/my.conf
错误日志位置:
该字段标记了是否启动日志,以及日志的位置,如果 mysql 服务不启动,可以到这个日志来查看。
3、Binary Log
二进制日志,默认不开启
(1) 开启二进制日志功能
如果是 mysql 则修改 my.cnf 文件:vim /etc/my.cnf
如果是 MariaDB 则要在 /etc/my.cnf.d/server.cnf 里修改文件。
找到 [mysqld] ,写入如下内容:
写入完毕后重启数据库:systemctl restart mariadb
在数据库中查询,可以发现二进制日志已开启:
在 /var/lib/mysql/ 下也可以查看到二进制日志文件:
(2) 查看二进制日志文件
mysqlbinlog -v /var/lib/mysql/bin-log.000001
查看二进制日志文件是否有记录改变的数据:
先创建一个新的数据库:
在二进制日志文件中可查看到已记录下创建数据库的信息
4、Slow Query Log
慢查询日志,默认不开启
(1) 开启慢查询日志功能
在 MariaDB 主配置文件 /etc/my.cnf.d/server.cnf 里写入配置
重启服务器:systemctl restart mariadb
在 /var/lib/mysql/ 下也可以查询,可以发现已经生成慢查询日志文件
(2) 模拟慢查询
select benchmark(100000000,2*3);
通过这条测试语句模拟一个长时间的查询,benchmark(查询次数,运算内容)
查看慢查询日志文件,发现已记录下这条查询结果,可以提交给开发人员进行相应优化。