mysql如何启用general log

来源:这里教程网 时间:2026-02-28 20:10:03 作者:

MySQL的general log用于记录所有SQL操作,适合排查问题或审计,但默认是关闭的,因为开启后对性能有一定影响。

查看当前general log状态

登录MySQL后执行以下命令:

SHOW VARIABLES LIKE 'general_log';
SHOW VARIABLES LIKE 'general_log_file';

如果

general_log
值为
OFF
,说明未启用;
general_log_file
显示日志文件路径。

临时启用general log(重启失效)

可以直接在会话中动态开启:

SET GLOBAL general_log = 'ON';
</font><p>此时日志会写入到默认文件或表中(取决于<code>log_output</code>设置)。</p><H3>设置日志输出方式</H3><p>MySQL支持将general log写入文件或数据库表,查看当前输出方式:</p><font face="Courier New"><pre class="brush:php;toolbar:false;">
SHOW VARIABLES LIKE 'log_output';

常见值:

FILE
TABLE
或两者都选
FILE,TABLE

如需修改:

SET GLOBAL log_output = 'FILE';        -- 写入文件
SET GLOBAL log_output = 'TABLE';       -- 写入mysql.general_log表
SET GLOBAL log_output = 'FILE,TABLE';  -- 同时写入

永久启用(配置文件设置)

编辑MySQL配置文件(通常是

/etc/my.cnf
/etc/mysql/my.cnf
),在
[mysqld]
段添加:

[mysqld]
general_log = ON
general_log_file = /var/log/mysql/general.log
log_output = FILE

确保目录存在且MySQL有写权限。保存后重启MySQL服务生效:

sudo systemctl restart mysql

查看日志内容

如果输出到文件,直接查看:

tail -f /var/log/mysql/general.log

如果输出到表,登录MySQL执行:

SELECT * FROM mysql.general_log ORDER BY event_time DESC LIMIT 100;

注意:生产环境慎用,长期开启可能产生大量日志,影响性能和磁盘空间。

基本上就这些,按需开启并定期清理即可。

相关推荐

热文推荐