MySQL通过通用查询日志和慢查询日志记录SQL操作,前者记录所有语句适合调试但影响性能,后者记录执行时间超阈值的语句用于优化。可通过配置文件或命令动态开启两种日志,需注意日志路径权限及安全模块限制,生产环境建议关闭通用日志以降低性能损耗。

MySQL查询日志包括慢查询日志(slow query log)和通用查询日志(general query log),它们用于记录数据库的查询操作,便于性能分析和问题排查。开启这些日志需要修改MySQL配置文件或通过命令动态设置。
1. 开启通用查询日志(General Query Log)
通用查询日志记录所有到达MySQL服务器的SQL语句,适合调试但对性能有一定影响,生产环境慎用。
方法一:通过配置文件永久开启
编辑 MySQL 配置文件(通常为 my.cnf 或 my.ini,Linux 下一般位于 /etc/my.cnf 或 /etc/mysql/my.cnf):
[mysqld] general_log = ON general_log_file = /var/log/mysql/general.log
保存后重启 MySQL 服务:
sudo systemctl restart mysql
方法二:动态开启(无需重启)
登录 MySQL 执行以下命令:
SET GLOBAL general_log = 'ON'; SET GLOBAL general_log_file = '/var/log/mysql/general.log';
注意:动态设置在MySQL重启后会失效,需配合配置文件使用。
2. 开启慢查询日志(Slow Query Log)
慢查询日志记录执行时间超过指定阈值的SQL语句,是性能优化的重要工具。
方法一:配置文件设置
CRMEB Min是CRMEB品牌全新推出的一款轻量级、高性能、前后端分离的开源电商系统,完善的后台权限管理、会员管理、订单管理、产品管理、客服系统、CMS管理、多端管理、页面DIY、数据统计、系统配置、组合数据管理、日志管理、数据库管理,一键开通短信、产品采集、物流查询等接口,系统采用TP6+Mysql+Uniapp+iView+Redis+workerman+form-builder等最流行热
在 [mysqld] 段添加如下配置:
slow_query_log = ON slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 log_queries_not_using_indexes = ON
- slow_query_log:启用慢查询日志
- slow_query_log_file:指定日志文件路径
- long_query_time:设定慢查询阈值(单位:秒)
- log_queries_not_using_indexes:记录未使用索引的查询(可选)
保存并重启 MySQL 服务生效。
方法二:动态开启
在MySQL命令行中执行:
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL slow_query_log_file = '/var/log/mysql/slow.log'; SET GLOBAL long_query_time = 2;
注意:long_query_time 修改后需重新连接才能生效。
3. 查看日志是否开启及路径
可通过以下命令查看当前日志状态:
SHOW VARIABLES LIKE 'general_log%'; SHOW VARIABLES LIKE 'slow_query_log%'; SHOW VARIABLES LIKE 'long_query_time';
4. 日志文件权限与路径注意事项
确保MySQL进程有权限写入指定日志目录。常见问题:
- 日志路径目录不存在
- MySQL用户(如mysql)无写权限
- SELinux或AppArmor限制(Linux安全模块)
建议将日志存放在 /var/log/mysql/ 目录,并设置正确权限:
sudo mkdir -p /var/log/mysql sudo chown mysql:mysql /var/log/mysql
基本上就这些。根据实际需求选择开启通用日志或慢查询日志,调试完成后建议关闭通用日志以减少性能损耗。









