必须用离线msi安装包并以管理员身份运行,否则服务注册失败、开机自启失效、mysql -u root -p无法登录;官网下载页需选约450mb的mysql-installer-community-8.0.xx.msi(离线),勿选2–3mb的在线包;custom安装时须手动添加mysql server并修改安装路径与数据目录;配置向导中必须选development computer、use strong password encryption、勾选windows service及开机自启;验证须依次执行sc query mysql80、netstat -an | findstr :3306、mysql -h 127.0.0.1 -u root -p。

必须用离线 MSI 安装包,且以管理员身份运行,否则服务注册失败、开机自启失效、mysql -u root -p 无法登录。
选错安装包会导致安装中途卡死或认证失败
官网下载页(https://dev.mysql.com/downloads/installer/)有两个关键包:mysql-installer-community-8.0.xx.msi(离线,约450MB)和 mysql-installer-web-community-8.0.xx.msi(在线,仅2–3MB)。后者需实时联网下载组件,网速波动或中断会卡在 “Executing” 状态,只能重装。
常见错误现象:
- 点击 Execute 后进度条长期不动,任务管理器里没
mysqld.exe进程 - 安装完成但
sc query MySQL80返回 “服务名无效” - Navicat 或 DBeaver 连接报错:
Client does not support authentication protocol requested by server—— 这往往是因为误选了在线包+Legacy Authentication
正确做法:
- 只下载带 “
Full” 或 “Recommended Download” 标识的离线 MSI 包 - 右键安装包 → “以管理员身份运行”
- 若弹出 “缺少 Microsoft Visual C++ Redistributable”,立即退出,先装
vcredist_x64.exe(2015–2022 版本均可),再重试
Custom 安装时必须手动添加 MySQL Server 并改路径
默认选 “Developer Default” 看似省事,但会装一堆用不到的组件(如 Router、Samples),且数据目录仍落在 C:\ProgramData\MySQL\(隐藏路径,后期排查日志极难找)。
实操建议:
- 安装类型选
Custom,不要点Next直接进组件页 - 左侧展开
MySQL Server 8.0.xx-X64,点击右侧箭头 → 添加到待安装列表 - 选中刚添加的
MySQL Server,点下方Advanced Options,把安装路径从C:\Program Files\MySQL\...改为D:\MySQL\Server80类非系统盘路径(避免 C 盘爆满影响服务) - 数据目录(
Data Directory)也一并改为同盘符下的D:\MySQL\Data,别留默认值
配置向导里三个选项决定能否远程连、是否被其他程序调用
安装完组件进入配置向导,这三步不设对,MySQL 就只是个命令行玩具,不是可用的服务:
-
Config Type:选Development Computer,不是Server Machine。后者默认开 150+ 连接、1GB 缓冲区,Win10/Win11 本地跑直接卡死 -
Authentication Method:必须选Use Strong Password Encryption。勾Use Legacy Authentication Method会导致 JDBC、PHP PDO 等客户端连接失败 -
Windows Service:务必勾上Configure MySQL Server as a Windows Service和Start the MySQL Server at System Startup。服务名保持默认MySQL80,改名后net start MySQL80会报错
端口保持 3306 即可;若提示占用,用 netstat -ano | findstr :3306 查 PID,再用 tasklist | findstr <pid></pid> 确认冲突进程(常见是 XAMPP、Docker Desktop、旧版 MySQL 服务)。
验证服务状态比图形界面登录更可靠
安装向导点完 Finish 不代表服务真起来了。很多人只打开 MySQL 8.0 Command Line Client 输入密码就以为成功,但该工具可能走的是 socket 连接,绕过了 TCP/IP 层,掩盖真实问题。
真正有效的验证顺序:
- 查服务状态:
sc query MySQL80,看到STATE : 4 RUNNING才算活的 - 查端口监听:
netstat -an | findstr :3306,应有LISTENING行 - 命令行登录:
mysql -h 127.0.0.1 -u root -p(强制走 TCP,不走 socket) - 环境变量配好后,在任意路径执行
mysql --version能输出版本号,说明bin路径生效
最容易被忽略的是服务名和启动方式绑定死——一旦改了服务名,后续所有命令(net start、sc query、第三方工具连接字符串里的 service=xxx)都得同步改,而多数人根本记不住自己改过什么。











