错误1067是Windows服务管理器因mysqld.exe启动后秒退返回的通用码,根本原因在MySQL初始化阶段失败;需用mysqld --console暴露真实错误,重点检查my.ini中basedir、datadir、log-error、innodb_log_file_size、port及废弃参数等五类配置,并验证权限与目录完整性。

错误 1067 不是 MySQL 自身报错,而是 Windows 服务管理器(SCM)发现 mysqld.exe 启动后几秒内就退出了,于是返回这个通用失败码。真正原因一定藏在启动初始化阶段——你根本没机会看到 MySQL 正常运行,更不会生成完整的错误日志。
用 mysqld --console 直接暴露致命错误
Windows 服务封装会吞掉所有早期输出,必须绕过它。以管理员身份打开 CMD,切换到 MySQL bin 目录,执行:
mysqld --defaults-file="C:/mysql/my.ini" --console
这条命令强制把初始化过程中的第一行崩溃信息打到终端,比如:
-
Can't find file: '.\mysql\plugin.frm'→datadir路径错或目录为空 -
Unknown variable 'skip-federated'→my.ini含 MySQL 8.0+ 已废弃参数 -
Failed to open log file 'D:/logs/error.log'→log-error指向的目录不存在或无写权限 - 完全没输出、直接退回命令行 →
my.ini路径错、文件含 BOM、或basedir根本不存在
检查 my.ini 里五个高危配置项
以下参数出错几乎不报明确提示,但必然触发 1067:
-
basedir和datadir必须是绝对路径,统一用正斜杠/,避免反斜杠转义问题;含空格或中文时,双引号包裹仍可能失效,优先迁移到C:/mysql类无空格路径 -
log-error指向的目录必须存在,且服务账户(如SYSTEM或自定义用户)对该目录有「写入」和「修改」权限 -
innodb_log_file_size值不能大于现有ib_logfile0文件大小,否则 InnoDB 拒绝初始化 -
port被占用会导致静默退出,用netstat -ano | findstr :3306确认 PID,再查任务管理器 - 旧版参数如
skip-innodb、innodb_additional_mem_pool_size、query_cache_type在 MySQL 8.0+ 中已移除,必须删掉
验证权限和数据目录状态
权限不足是最隐蔽的元凶,尤其当你手动改过服务登录账户:
- 右键
datadir文件夹 → 「属性」→ 「安全」→ 找到服务账户(不是当前登录用户),确认「完全控制」已勾选,别依赖继承 -
datadir必须包含ibdata1、mysql/、performance_schema/等基础子目录;若为全新安装,需先执行mysqld --initialize-insecure --datadir="C:/mysql/data" - 若
ib_logfile0或ibdata1损坏,mysqld --console通常会报InnoDB: Unable to open the first datafile,此时可临时重命名旧日志文件再试(仅限测试环境)
真正棘手的情况是:终端只显示 Aborting... 就退出,连模块名都没来得及打出——这说明错误发生在 InnoDB 初始化之前,大概率是 my.ini 编码含 BOM、路径解析失败,或 basedir/share/errmsg.sys 文件缺失。这时候别猜,直接用十六进制编辑器检查 my.ini 是否以 EF BB BF 开头,或者把整个 MySQL 目录挪到短路径下重试。


















