mysql 5.7升级只能到8.0.x或8.4 lts,不可直升9.x;5.7.44是5.7最终版,后续安全修复仅在8.0+发布;windows升级须匹配原安装方式(installer或zip),并彻底清理服务、注册表及数据目录残留,启动后须立即处理caching_sha2_password等兼容性问题。

不能直接“升到最新版”,必须明确目标版本——MySQL 5.7 升级只能到 8.0.x 或 8.4 LTS,9.x 是 Innovation 版本,不适用于生产环境;且 5.7.44 是 5.7 分支的最终版,之后所有安全修复都只在 8.0+ 上发布。
先确认旧版本安装方式,决定升级路径
Windows 上 MySQL 的升级方式严格依赖初始安装方式:
- 如果原先是用
MySQL Installer(.msi 或离线安装器)安装的,可继续用新版本 Installer 执行“Upgrade”流程,它会自动识别服务、保留配置、迁移数据目录 - 如果原先是解压 ZIP 包 + 手动注册服务(
mysqld -install),则必须用 ZIP 方式升级:停止旧服务 → 替换二进制 → 复制data目录 → 重注册服务 → 启动验证 - 若不确定安装方式,优先选 ZIP 方式:更可控、不依赖注册表残留、避免 Installer 误判旧配置
混用方式(如 ZIP 安装却用 Installer 升级)会导致服务名冲突、my.ini 路径错乱、甚至启动时找不到 datadir。
升级前必须清理的三类残留
Windows 下未彻底卸载 5.7 会直接导致 8.0 启动失败或连接异常。重点清理:
通过 handsfree-windows CLI控制 Windows 本机应用 (UIA) 和浏览器 (Playwright) 的引导技能,用于自动化或测试桌面应用。
-
Windows 服务:在“服务”管理器中确认MySQL57(或你自定义的服务名)已停止并删除,命令行执行sc delete MySQL57 -
注册表项:打开regedit,删除HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB及其子项(Installer 留下的元信息) -
隐藏数据目录:默认路径是C:\ProgramData\MySQL\MySQL Server 5.7\data,该目录不能直接删,但要确保升级时新实例指向的是它(不是新建空目录);同时检查my.ini中datadir路径是否真实存在且权限正确(建议用管理员账户完全控制)
漏掉任意一项,都可能触发 Failed to find valid data directory 或 Access is denied 错误。
启动 8.0 后立即处理的兼容性问题
MySQL 8.0 启动成功 ≠ 可用。以下三项必须在首次连接后立刻验证和调整:
-
caching_sha2_password认证插件:老客户端(如 Navicat 旧版、某些 Python pymysql Authentication plugin 'caching_sha2_password' cannot be loaded。临时解决:登录后执行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; -
query_cache_type参数:8.0 已移除查询缓存,若my.ini中仍存在该配置项,mysqld将拒绝启动。务必删掉或注释整行 -
sql_mode默认值变更:8.0 默认启用STRICT_TRANS_TABLES和ONLY_FULL_GROUP_BY,旧业务 SQL 可能报错。可在my.ini中显式设为兼容值,例如:sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
这些不是“可选优化”,而是影响业务连通性的硬性适配点,跳过等于升级失败。
真正卡住人的从来不是下载和安装,而是升级后那几条没改的配置、那个没删的旧服务、以及客户端驱动和认证插件之间的那一层不匹配。动手前花 10 分钟确认安装方式、清理残留、抄好三条 SQL,比反复重装快得多。










