Mysql中关于查询日志的配置详解
查询日志
MySQL中的查询日志保存在文本文件中,能够记录MySQL中的所有数据操作。
开启查询日志
MySQL默认情况下没有开启查询日志,如果需要开启查询日志,则需要在 my.cnf
文件或者 my.ini
文件的 [mysqld]
选项下进行配置。例如,配置开启 MySQL 的查询日志:
[mysqld]
general_log = 1
general_log_file = /data/mysql/log/general_log/general_statement.log
log_output = FILE
各种配置说明如下:
·general_log
:表示是否开启查询日志。此项设置为 1
或者不带任何值,都可以开启查询日志;设置为0或者在 my.cnf
文件或 my.ini
文件中没有配置此项,则不会开启查询日志。
·general_log_file
:查询日志的文件目录,笔者这里配置的是日志的完整路径。
·log_output
:表示日志的存储方式,可以有 3 种取值,TABLE
表示将查询日志存储到数据表中;FILE
表示将查询日志保存到文件中;NONE表示不保存日志信息到数据表和文件中。
注意:开启查询日志时,如果没有显示指定 general_log_file
选项和 log_output
选项的值,则 MySQL 会将查询日志保存到 DATADIR 选项指定的目录下(也就是数据库中的数据目录),默认的文件名称为 host_name.log
,其中,host_name 为 MySQL 的主机名。
配置开启查询日志之前,首先查看 /data/mysql/log/general_log
目录下的文件信息。
[root@binghe150 ~]#
[root@binghe150 ~]# ll /data/mysql/log/general_log/
total 0
当未配置 MySQL 的查询日志时,/data/mysql/log/general_log/
目录下不存在任何文件。
开启查询日志配置完成后,需要重启MySQL服务才能生效。
[root@binghe150 ~]# service mysqld restart
Shutting down MySQL..... SUCCESS!
Starting MySQL........ SUCCESS!
也可以在MySQL命令行中指定开启MySQL的查询日志。
mysql> SET GLOBAL general_log = 1;
Query OK, 0 rows affected (0.01 sec)
mysql> SET GLOBAL general_log_file = '/data/mysql/log/general_log/general_statement.log';
Query OK, 0 rows affected (0.00 sec)
mysql> SET GLOBAL log_output = 'file';
Query OK, 0 rows affected (0.00 sec)
此时,再次查看 /data/mysql/log/general_log/
目录下的文件。
[root@binghe150 ~]# ll /data/mysql/log/general_log/
total 4
-rw-r----- 1 mysql mysql 547 Jan 17 11:39 general_statement.log
当开启查询日志配置完成后,MySQL会自动创建general_log_file选项指定的日志文件。
查看查询日志
如果log_output选项配置的是将查询日志保存到文件中,则日志文件的格式为纯文本格式,可以直接查看日志文件中的内容。
cat /data/mysql/log/general_log/general_statement.log
查询日志中记录了所有的SQL语句的信息。
删除查询日志
- 直接找到日志目录即可删除日志记录。
rm -rf /data/mysql/log/general_log/general_statement.log
- 刷新日志
-
刷新前日志记录如下:
-
刷新查询日志
- 可以在MySQL命令行中执行如下命令刷新日志。
mysql> FLUSH LOGS; Query OK, 0 rows affected (0.02 sec)
- 也可以在服务器命令行中执行如下命令刷新日志。
[root@binghe150 ~]# mysqladmin -uroot -p flush-logs Enter password:
日志刷新成功,再次查看 /data/mysql/log/general_log
目录下的文件。
- 执行刷新命令后日志记录如下:
关闭查询日志
关闭查询日志就比较简单了,只需要在 my.cnf
文件或者 my.ini
文件的 [mysqld]
选项下,将 general_log
选项配置为 0 ,或者删除 general_log
选项。
[mysqld]
general_log = 0
配置完成后,重启 MySQL 才能生效。
也可以在 MySQL 命令行中执行如下命令关闭查询日志。
mysql> SET GLOBAL general_log = 0;
Query OK, 0 rows affected (0.00 sec)
当关闭查询日志后删除查询日志,再执行刷新日志的操作,MySQL 将不再重新创建查询日志文件。
相关文章
- Mysql加锁过程详解(2)-关于mysql 幻读理解
- Linux别名设置导致mysql_config_editor配置登录报错
- 报错:MySQL Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
- mysql数据库安装配置
- 你想知道的 MySQL 性能调优方式,都在这里!
- web安全day32:人人都要懂的LAMP--mysql-server服务安装及安防配置
- Mysql连接错误:Lost connection to Mysql server at 'waiting for initial communication packet'
- 【MySQL进阶-02】mysql的explain执行计划以及索引优化
- mysql查询优化
- MySQL mysqldump备份数据库及恢复数据库(mysql命令)
- 怎么查看mysql的数据库编码格式
- Mysql的安全配置向导命令mysql_secure_installation
- MySQL 调优基础(三) Linux文件系统
- 《深入浅出MySQL:数据库开发、优化与管理维护(第2版)》一一第 1 章 MySQL的安装与配置
- ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061),mysql服务已启动
- linux MySql 在 Master 主从复制配置
- Windows 免安装版mysql,适用于版本MySQL 5.7.7及以上,快速配置教程
- MySQL 5.6 解决InnoDB: Error: Table "mysql"."innodb_table_stats" not found.问题
- mysql 索引类型
- 在centos中php 在连接mysql的时候,出现Can't connect to MySQL server on 'XXX' (13)
- 解决MySQL出现大量unauthenticated user的问题
- Mysql error.log报错:Error: Table “mysql”.“innodb_table_stats” not found
- 【转】mysql分库分表,数据库分库分表思路
- MySql 5.6 安装及下载(一键安装),配置命令封装为脚本(快捷工具),一键启动自动安装到服务,可设置手动启动、自动启动、延迟启动,适合做批量服务器部署
- 【MySql 】is not allowed to connect to this MySql server 无法访问远程MySQL数据库
- MySQL - 一文了解MySQL的基础架构及各个组件的作用