MySQL 5.7 Windows服务突然无法启动,报Error 1067故障问询
先看你提供的错误日志片段:
2018-04-03T19:25:18.722913Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2018-04-03T19:25:18.722913Z 0 [W...
先给个明确的结论:这个TIMESTAMP的警告只是配置层面的提示,不会直接导致服务启动失败,真正的故障原因肯定在日志被截断的后半部分。下面是我踩过坑后整理的优先级排查步骤:
第一步:找到完整的错误日志
Win7下MySQL的错误日志默认存在C:\ProgramData\MySQL\MySQL Server 5.7\Data目录下(ProgramData是隐藏文件夹,要先开启显示隐藏项),文件名一般是你的主机名加.err后缀(比如DESKTOP-XXXXXX.err)。打开完整日志,重点找带[ERROR]标记的行——这才是启动失败的核心原因,比如常见的有数据文件锁死、权限不足、配置文件语法错误、表损坏等。
第二步:检查my.ini配置文件的正确性
- 先确认服务启动参数:打开services.msc,右键MySQL服务→属性→「可执行文件路径」,检查
--defaults-file指向的my.ini路径是否正确,有没有打错盘符或文件夹名。 - 打开my.ini,重点核对:
datadir参数:路径是否存在,注意要用斜杠/或者双反斜杠\\,比如datadir="C:/ProgramData/MySQL/MySQL Server 5.7/Data",不能用单反斜杠\- 有没有语法错误:比如括号不闭合、参数名拼写错误(比如把
innodb_buffer_pool_size写成innodb_buffer_pool_szie) - 主从同步相关参数:如果之前配置了主从,检查
server-id、log-bin等参数的路径和值是否正常
第三步:检查数据目录的权限
Win7下MySQL服务默认用Local System账号运行,但如果手动改过服务运行账号,很容易出现权限问题:
- 找到Data文件夹,右键→属性→安全→编辑→添加,把MySQL服务对应的账号(比如Local System或者你自定义的账号)添加进去
- 给该账号分配完全控制的权限,应用后再尝试启动服务
第四步:排查数据文件损坏(主从同步场景高发)
因为你是主从同步架构,突然中断大概率会导致InnoDB数据文件损坏:
- 先完整备份整个Data目录(重要!别直接操作原数据)
- 打开命令提示符,切换到MySQL的bin目录(比如
cd C:\Program Files\MySQL\MySQL Server 5.7\bin) - 尝试用InnoDB恢复模式启动:在my.ini的
[mysqld]段下添加innodb_force_recovery=1,然后启动服务- 如果能启动,立刻用
mysqldump导出所有数据库:mysqldump -u root -p --all-databases > all_dbs.sql - 如果还是启动不了,逐步调高
innodb_force_recovery的数值(最大到6,数值越高恢复力度越大,但可能丢失部分数据)
- 如果能启动,立刻用
- 如果是MyISAM表损坏,用
myisamchk工具修复:myisamchk -r C:\ProgramData\MySQL\MySQL Server 5.7\Data\your_db\your_table.MYI
第五步:验证服务依赖
Win7上MySQL服务依赖于TCP/IP Protocol Driver,可以在services.msc里右键MySQL服务→依存关系,确认依赖的服务都已经启动。如果依赖服务未启动,先启动它们再尝试启动MySQL。
内容的提问来源于stack exchange,提问作者oldgregg




