当前位置: 代码迷 >> 综合 >> MySQL DBA运维实战—第4章—SQL3。
  详细解决方案

MySQL DBA运维实战—第4章—SQL3。

热度:48   发布时间:2024-02-20 17:27:24.0

目录

一 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 

        观察长查询日志记录,记录了刚才超长的查询结果。
稍后反馈给开发部,进行优化。

 

 

 

 

 

 

 

 

 

 

  相关解决方案