MySQL安全----日志管理(二)

2023-05-18 14:38:44 浏览数 (1)

简介

MySQL的日志有主要有四种,会记录不同的操作行为,分别是----二进制日志、错误日志、查询日志、慢查询日志。开启日志是MySQL安全的必要手段之一,但是会影响MySQL的性能,所以要学会日志管理,根据实际的业务需求来选择日志。

详解

查询日志

查询日志记录了mysql的所有用户操作,包括启动和关闭服务、执行查询和更新语句等。

开启查询日志

mysql服务器默认情况下并没有开启查询日志。 在my.ini或my.cnf的[mysqld]组下加入log选项,形式如下:

代码语言:javascript复制
[mysqld]
log[=path/[filename]]

Other

path为日志文件所在目录路径,filename为日志文件名。可以不指定目录和文件名,将默认存储在mysql数据目录中的hostname.log文件中。

查看查询日志

查询日志是以文本文件的形式存储的,可以直接打开查看。 文件内容如下:

代码语言:javascript复制
E:Program FilesMySQLMySQL Server 5.7binmysqld, Version: 5.7.19-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
140801 23:39:33        1 Connect    root@localhost on 
            1 Query    SHOW VARIABLES
            1 Query    SHOW WARNINGS
            1 Query    select timediff( curtime(), utc_time() )
            1 Query    SHOW COLLATION
            1 Query    SET NAMES utf8
            1 Query    SET character_set_results=NULL
            1 Query    SELECT * FROM `emp`
140801 23:39:44        1 Query    SELECT * FROM `emp`
            1 Query    SELECT * FROM `emp`
140801 23:39:55        1 Query    USE test;

SELECT * FROM `emp`
            1 Init DB    test

Other

删除查询日志

  • 删除查询日志文件,再执行下一步。
  • 执行 flush logs 命令生成新的查询日志文件。

慢查询日志

慢查询日志是记录查询时长超过指定时间的日志。慢查询日志主要用来记录执行时间较长的查询语句,通过慢查询日志可以找出执行时间较长、执行效率较低的语句,然后进行优化。

开启慢查询日志

mysql中慢查询日志默认是关闭的。 在my.ini或者my.cnf文件中开启慢查询日志的配置如下:

代码语言:javascript复制
[mysqld]
log-slow-queries[=path/[filename]]
long_query_time=n

Other

path为日志文件所在目录路径,filename为日志文件名。可以不指定目录和文件名称,默认存储在数据目录中文件名为hostname-slow.log,hostname是mysql服务器的主机名。 long_query_time设置查询时间,超过这个时间的语句会被记录。可以不写,默认十秒(单位秒)。

查看慢查询日志

慢查询日志也是以文本文件的形式存储的,可以直接打开查看。 文件内容如下:

代码语言:javascript复制
E:Program FilesMySQLMySQL Server 5.7binmysqld, Version: 5.7.19-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 140802  0:02:29
# User@Host: root[root] @ localhost [::1]
# Query_time: 7.578125  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use test;
SET timestamp=1406908949;
SELECT BENCHMARK (10000000,PASSWORD ('newpwd'));

Other

删除慢查询日志

  • 删除慢查询日志文件,再执行下一步。
  • 执行 flush logs 命令生成新的慢查询日志文件。

0 人点赞