如果你在 DigitalOcean 上跑 MySQL 8.0,这个月有一件不能拖的事:DO 将在 10 月 30 日强制把 8.0 实例升级到 8.4。而 MySQL 8.0 早在 2026-04-30 就已经 EOL(生命周期结束),意味着这半年你跑的一直是没有安全更新的版本。
强制升级最痛的从来不是版本号,而是不兼容项在升级当天才暴露。根据我们的巡检经验,8.0 → 8.4 有三类问题最常见:
1. 还在用 mysql_native_password 的账号
MySQL 8.4 默认认证插件是 caching_sha2_password,并且对 mysql_native_password 的支持进一步收紧。从 8.0 时代遗留下来的老账号如果没改过认证插件,升级后可能直接连不上。
先自查,一条 SQL 列出所有"钉子户":
SELECT user, host, plugin
FROM mysql.user
WHERE plugin = 'mysql_native_password';
修复也很直接,逐个改掉:
ALTER USER 'app'@'%' IDENTIFIED WITH caching_sha2_password BY 'new_password';
注意:改完要在业务低峰验证应用连接,老客户端驱动对 caching_sha2_password 的支持要先确认。
2. 8.4 已移除的系统变量
8.4 移除了几个 8.0 时代就已废弃的变量。如果你的 my.cnf 或启动脚本里还写着它们,升级后实例可能起不来。典型例子包括 avoid_temporal_upgrade、show_compatibility_56 等——别凭记忆猜,用 dbcheck 的采集包跑一遍,8.4 已移除变量扫描会自动标出来并给出替换建议。
3. EOL 之后的安全真空
2026-04-30 之后,8.0 不再收到任何安全补丁。这半年的 CVE 都是裸奔。升级 8.4 不只是"跟上版本",而是把安全更新通道重新接上。
现在就做一次升级就绪检查
dbcheck 的 MySQL 引擎已经内置了「8.4 升级就绪检查」:上传采集包,自动输出 EOL 风险、native_password 账号清单、已移除变量扫描三项结论,免费看评分与风险摘要。10 月 30 日之前把这三项清零,升级当天才能睡得着。