MySQL 错误日志默认不开启,需手动配置才能记录启动、关闭、崩溃及关键错误信息。它和慢查询日志、通用查询日志是独立的,路径与开关由
my.cnf(或
my.ini)中的参数控制。
确认错误日志是否已启用
登录 MySQL 后执行:
SHOW VARIABLES LIKE 'log_error';
若返回空值或值为
NULL,说明错误日志未启用;若返回具体路径(如
/var/log/mysqld.log),说明已启用且可查该文件。
在配置文件中设置错误日志路径
编辑 MySQL 配置文件(Linux 通常为
/etc/my.cnf或
/etc/mysql/my.cnf,Windows 为
my.ini),在
[mysqld]段落下添加或修改:
log_error = /var/log/mysql/error.log
注意:
路径目录必须存在,且 MySQL 进程(如mysql用户)有写权限 不建议写到根目录或系统关键路径,推荐放在
/var/log/mysql/或
/data/mysql/logs/等专用目录 无需指定
log_error_verbosity即可记录基础错误,但如需更详细信息(如语句上下文),可额外设为
3
重启 MySQL 生效并验证
保存配置后重启服务:
systemctl restart mysqld(CentOS/RHEL)
sudo service mysql restart(Ubuntu/Debian)
重启后再次运行
SHOW VARIABLES LIKE 'log_error';,确认路径正确;然后用
tail -f /your/log/path实时观察日志是否开始写入新内容(如启动信息、警告等)。
常见问题处理
如果日志没生成,检查以下几点:
配置文件是否写在正确的[mysqld]段落下(不是
[client]或
[mysql]) MySQL 是否因配置错误无法启动?查看系统日志:
journalctl -u mysqld -n 50 --no-pager路径父目录权限是否正确?例如
chown -R mysql:mysql /var/log/mysql,
chmod 755 /var/log/mysqlSELinux(RHEL/CentOS)是否阻止写入?临时禁用测试:
setenforce 0
