my.ini 文件必须用 ansi 编码,否则 mysql 8.0 因 utf-8-bom 报错 unknown variable '锘縖mysqld]';basedir 和 datadir 路径需用英文、无空格括号,反斜杠可用正斜杠替代;初始化 data 目录须在 bin 目录下执行 mysqld --initialize --console;安装服务前需安装 vc++2015–2022 x64 运行库;首次登录必须用临时密码并立即执行 alter user 修改密码,否则密码过期无法操作。

my.ini 文件必须用 ANSI 编码,否则 MySQL 启动失败
Windows 自带记事本默认保存为 UTF-8 带 BOM,MySQL 8.0 的 mysqld 读取配置时会因开头的 BOM 字节报错:unknown variable '锘縖mysqld]'。这不是路径或语法问题,而是编码污染。
- 用记事本新建文件 → 另存为 → 编码选「ANSI」→ 文件名填
my.ini(注意勾选“所有文件”,否则会变成my.ini.txt) - 更稳妥的方式是用 Notepad++ 或 VS Code:保存时明确选 Encoding → ANSI(不是 UTF-8 或 UTF-8-BOM)
-
basedir和datadir路径中的反斜杠\可以写成正斜杠/(如D:/mysql8),MySQL 8.0 全部兼容;但路径中绝对不能含中文、空格或括号
初始化 data 目录前,必须先 cd 到 bin 目录再执行 mysqld --initialize
直接在任意目录下运行 mysqld --initialize 会提示 The data directory must be specified 或找不到 mysqld.exe —— 因为该命令依赖当前工作目录下的动态库和配置上下文。
- 以管理员身份打开 CMD,先切换到 MySQL 解压目录下的
bin子目录:cd /d D:\mysql8\bin - 执行初始化:
mysqld --initialize --console(加--console才能在终端看到生成的临时 root 密码) - 不要手动创建
data文件夹再往里塞文件;--initialize会自动创建标准结构(包括mysql、sys系统库),且首次启动后不可重复执行
安装 Windows 服务时常见 DLL 缺失错误
运行 mysqld install 报错 VCRUNTIME140_1.dll not found 或类似提示,本质是缺少 Visual C++ 运行时组件,不是 MySQL 包损坏。
- 去微软官网下载并安装 Microsoft Visual C++ 2015–2022 Redistributable (x64)(注意必须是 x64 版,即使系统是 64 位)
- 安装完成后重启 CMD,再执行
mysqld install和net start mysql - 如果仍报错,检查是否误用了 32 位 MySQL ZIP 包(官网只提供 x64 版本,但某些镜像站可能混入旧包)
首次登录必须用临时密码,且立即修改
MySQL 8.0 默认启用强密码策略,mysqld --initialize 输出的临时密码只能用一次,且登录后必须立刻改密,否则后续任何操作都会被拒绝。
- 用临时密码登录:
mysql -u root -p→ 粘贴控制台输出的最后一行密码(形如A9v#fK2x!Qm@) - 登录后立即执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPass123'; - 如果跳过这步直接退出,下次再登录会报错
Your password has expired,必须重置(需停服务 + 跳过权限验证启动,麻烦得多)
cd /d D:\mysql8\bin 和 mysqld --initialize --console 这两步写成批处理脚本,避免每次手敲出错。











