首先确认general log是否开启,使用SHOW VARIABLES LIKE 'general_log';若为OFF需手动开启;接着查看log_output设置,判断日志输出到文件还是表;若为FILE可查看general_log_file路径并用系统命令读取,若为TABLE则查询mysql.general_log表;调试时可临时开启SET GLOBAL general_log = 'ON';完成后应关闭以避免性能影响。
查看 MySQL 的 general log 可以帮助你了解数据库接收到的所有查询和连接操作。以下是启用并查看 general log 的步骤。
确认 general log 是否开启
登录到 MySQL 命令行后,执行以下命令:
SHOW VARIABLES LIKE 'general_log';
如果返回值为 ON,说明已开启;如果是 OFF,则需要手动开启。
查看 general log 的输出方式
执行以下命令查看日志输出是写入文件还是写入表:
SHOW VARIABLES LIKE 'log_output';
返回值可能是 FILE 或 TABLE,也可能是两者都包含(如 'FILE,TABLE')。
- 如果是 FILE:日志会写入指定的日志文件
- 如果是 TABLE:日志会写入 mysql.general_log 表中
查看日志内容
根据 log_output 的设置,选择对应方式查看日志:
方式一:从文件查看(推荐)
SHOW VARIABLES LIKE 'general_log_file';
这条命令会显示日志文件的路径。你可以使用系统命令查看文件内容,例如:
tail -f /var/lib/mysql/hostname.log
方式二:从数据库表查看
SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 100;
注意:如果数据量大,该表可能影响性能,建议只在调试时启用。
临时开启 general log(用于调试)
如果你只是临时需要查看日志,可以动态开启:
SET GLOBAL general_log = 'ON';
完成后记得关闭,避免影响性能:
SET GLOBAL general_log = 'OFF';
基本上就这些。开启 general log 会带来一定性能开销,不建议长期开启,仅在排查问题时使用。