log-error必须写在[mysqld]段内,否则不生效;需用绝对路径、确保MySQL服务账户有写权限,重启后执行SHOW VARIABLES LIKE 'log_error'验证路径是否生效。

log-error 配置项必须写在 [mysqld] 段内,否则不生效
MySQL 启动时只读取 [mysqld] 段下的日志配置,如果把 log-error 放在 [client] 或文件开头无段落标记处,服务能启动但错误日志仍写入默认位置(如 C:ProgramDataMySQLMySQL Server 8.0Datahostname.err)。检查是否生效,最直接的方式是重启后执行:
SHOW VARIABLES LIKE 'log_error';
返回值应为你指定的完整路径。
路径写法要避免反斜杠转义和权限问题
Windows 下配置 log-error 时,路径中的反斜杠 容易被误解析为转义字符。推荐统一使用正斜杠 / 或双反斜杠 \:
-
log-error = D:/mysqllog/error.log✅ 推荐,简洁且无歧义 -
log-error = D:\mysqllog\error.log✅ 合法,但易漏写一个反斜杠 -
log-error = D:mysqllogerror.log❌ 可能导致 MySQL 启动失败或路径截断
另外,MySQL 服务账户(通常是 NT SERVICEMysql)必须对目标目录有写入权限。若日志目录在 D: 盘根目录下,建议右键 → 属性 → 安全 → 编辑,显式添加该服务账户的“修改”权限。
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
错误日志路径修改后,旧日志不会自动迁移
改完 log-error 并重启,MySQL 只会往新路径写入后续错误日志,**不会移动、重命名或清理旧日志文件**。这意味着:
- 原
datadir下的hostname.err仍存在,且可能还在被写入(如果配置未生效) - 若想归档历史日志,需手动复制或重命名,不要直接删除正在使用的日志文件
- 如果发现新日志没生成,先确认
SHOW VARIABLES LIKE 'log_error'返回值是否正确,再检查目录权限和磁盘空间
与其他日志类型(binlog、slow log)配置相互独立
log-error 控制的是 MySQL 错误日志,它和二进制日志(log-bin)、慢查询日志(slow_query_log_file)等互不影响。例如:
[mysqld]<br>log-error = D:/mysqllog/error.log<br>log-bin = D:/mysqllog/mysql-bin.log<br>slow_query_log_file = D:/mysqllog/slow.log
三者可以指向同一目录,但必须分别配置;只改 log-error 不会影响 binlog 路径。注意:若启用 log-bin,其路径必须是绝对路径,且目录需由 MySQL 服务账户可写,否则启动会失败并报错 Failed to open log (errno: 13)。
实际改完配置后最容易被忽略的一点:MySQL 服务账户对新日志目录的 NTFS 权限不是“继承自父目录”就一定够用——尤其当目录是新建的,或从其他磁盘复制而来时,权限可能缺失。务必手动验证写入能力,而不是只看配置文件是否保存成功。










