MY-010457是MySQL 8.0+的硬性校验错误,表示datadir下存在任意文件(含隐藏文件、空子目录等),初始化直接中止;必须清空真实datadir(用dir /a或find确认无任何项)、赋予NETWORK SERVICE完全控制权、关闭Windows UTF-8 Beta区域设置,并以管理员身份执行带--defaults-file的mysqld --initialize命令。

MY-010457 错误不是提示,是硬性中止:只要 datadir 下存在任意文件(含隐藏文件、空子目录、.auto.cnf、Thumbs.db),初始化就直接退出,不给重试机会。
确认并清空真正的 datadir 目录
MySQL 8.0 不会创建 datadir,只往一个已存在且**完全为空**的目录里写。它不区分“是不是旧数据”,只做存在性判断。
- 先查
my.ini里的datadir值,例如datadir=D:/mysql/data;没配则默认为C:ProgramDataMySQLMySQL Server 8.0Data(注意这是隐藏目录) - 用资源管理器打开该路径后,必须开启“显示隐藏的项目”,再手动确认——不能只看有没有 visible 文件
- 最稳妥方式是命令行强制清空:
rd /s /q "D:mysqldata" && mkdir "D:mysqldata"(Windows)或find /var/lib/mysql -mindepth 1 -delete(Linux,比rm -rf /var/lib/mysql/*更彻底) - 别删整个
datadir文件夹本身,否则会报“路径不存在”
权限必须给对账户:NETWORK SERVICE 而非当前用户
Windows 下 MySQL 服务默认以 NETWORK SERVICE 账户运行,它对 datadir 必须有“完全控制”权。仅用管理员身份开 CMD 或给当前登录用户赋权,毫无作用。
- 右键
datadir文件夹 → 属性 → 安全 → 编辑 → 添加 → 输入NETWORK SERVICE→ 勾选“完全控制” - 同时添加
SYSTEM并赋予相同权限(部分 Windows 版本要求) - 如果用了自定义路径(如
D:mysqldata),还要检查basedir目录是否也给了NETWORK SERVICE权限 - 改完权限后,务必关闭并重新以管理员身份打开 CMD,否则新权限不生效
绕过 UTF-8 Beta 区域设置导致的路径解析崩溃
Windows 系统若启用了「Beta: 使用 Unicode UTF-8 提供全球语言支持」,MySQL 会把路径字符串解析成乱码(如日志里出现 .浜掕紑鍙戦儴-鐬?bin.index),进而触发初始化失败,且错误信息不明确。
- 进入「设置 → 时间和语言 → 语言 → 管理语言设置 → 更改系统区域设置」
- 取消勾选「Beta: 使用 Unicode UTF-8…」,重启电脑
- 该设置影响所有基于 Windows API 的 C/C++ 程序,MySQL 8.0 无法绕过
执行初始化时必须带 --defaults-file 参数
漏掉这个参数,mysqld --initialize 就不会读你的 my.ini,而是去找系统默认位置(如 C:my.ini 或注册表路径),大概率因配置缺失或路径错乱而失败。
- 以管理员身份打开 CMD,
cd进入 MySQL 的bin目录(如D:mysqlin) - 执行:
mysqld --defaults-file=D:/mysql/my.ini --initialize-insecure --console -
--console必须放在最后,否则参数解析失败;路径中统一用正斜杠/或双反斜杠\,禁止单反斜杠 - 如需生成临时密码,把
--initialize-insecure换成--initialize,但终端编码必须是 UTF-8,否则密码显示为类乱码
真正卡住初始化的,从来不是“哪里配错了”,而是“以为清空了,其实没清干净”或“以为权限给了,其实给错了人”。尤其是 Thumbs.db、.git、.DS_Store 这类隐藏项,以及 Windows 下被标记为“系统”属性的残留文件,最容易被忽略。


















