当前位置:首页 > 文章列表 > 数据库 > MySQL > MySQL 8.4 升级后旧账号连不上:mysql_native_password 迁移到 caching_sha2_password 的实战步骤

MySQL 8.4 升级后旧账号连不上:mysql_native_password 迁移到 caching_sha2_password 的实战步骤

来源:17golang原创 2026-07-20 11:03:03 0浏览 收藏

发布窗口刚过五分钟,订单服务的连接池开始报 Access denied,而同一套账号在旧库上还能正常登录。不少团队碰到这类问题第一反应是密码输错或者网络不通,真正的根因往往出在 MySQL 8.4 升级上:老账号依赖的 mysql_native_password 默认不再启用,服务端已经不再接受这个认证方式的登录请求。

这次认证不通过不是账号记录丢了,是升级后服务端直接禁用了旧的认证插件,哪怕你输入的密码完全正确,也无法完成建连。要彻底解决问题,得把存量账号逐个平滑迁移到 MySQL 8.4 新的默认认证体系下,临时开兼容开关只能当作过渡手段。
要点速览
  • 升级前先统计 mysql.user.plugin,不要等应用报错后才找遗留账号。
  • 目标是迁移到 caching_sha2_password;临时打开旧插件只能作为短期过渡。
  • 首个新认证连接要验证 TLS 或 RSA 公钥交换,缓存命中后的连通不代表配置永远正确。
  • 按应用账号灰度切换并保留可回退窗口,比一次性改所有账号更稳。

先认清 MySQL 8.4 改了什么

这不是驱动突然变严格。MySQL 8.4 把 caching_sha2_password 作为默认认证插件,已经被标记弃用的 mysql_native_password 在服务端默认禁用;继续依赖它的账号,升级后大概率会在建连阶段失败。MySQL 8.4 仍保留一个临时兼容开关,但 MySQL 9.0 已经彻底移除了旧插件,把开关当长期方案只是在推迟下一次升级的故障风险。

排查的时候先把“账号仍存在”和“账号可被当前服务端认证”分开看。账号记录还在,不等于绑定的认证插件可用;应用能偶尔复用之前留着的旧连接,也不等于重连一定能成功。

在升级窗口前盘点旧认证账号

先在预发环境或者从库跑一遍盘点。别着急直接修改 mysql.user,认证相关字段要通过账号管理语句变更。

SELECT user, host, plugin
FROM mysql.user
WHERE plugin = 'mysql_native_password'
ORDER BY user, host;

查询结果要和应用配置、定时任务、BI工具以及运维脚本逐个对应。最容易漏掉的是只在夜间跑一次的归档任务,白天做压测当然完全覆盖不到。建议把下面几类账号单独标记出来:

账号来源先确认什么迁移后要看什么
线上服务连接池驱动是否支持 SHA-2 认证滚动重启后的新连接
批处理与脚本命令行客户端版本与连接参数计划任务日志
报表或第三方工具是否能升级连接器TLS 和证书配置
复制、备份、监控专用账号实际用途关键指标是否继续采集

MySQL 8.4 认证迁移中从旧账号盘点到客户端兼容性检查的清单板

为什么首连校验比“能连一次”更重要

caching_sha2_password 会在服务端保存认证缓存。账号刚创建、刚改完密码、改过认证插件、执行过 FLUSH PRIVILEGES 或者数据库重启后,第一次连接不能只靠缓存走流程。这时候需要走安全传输,或者让客户端能拿到RSA公钥完成密码交换。

所以迁移演练要故意做一次冷启动:重启测试库或者清空认证缓存之后,再让每个应用重新建连。只验证保留了缓存的热连接,很容易把首连的问题藏到真正的发布窗口里。

按应用账号灰度迁移到 caching_sha2_password

先从低风险服务账号开始操作,改完立刻用对应服务在用的驱动和连接串建一个全新的连接。下面的示例会重置该账号的密码;生产操作前要从受管密钥系统取对应值,别把真实密码写进SQL文件或者聊天记录里。

ALTER USER 'order_api'@'10.%'
  IDENTIFIED WITH caching_sha2_password BY 'replace-with-managed-secret';

SELECT user, host, plugin
FROM mysql.user
WHERE user = 'order_api';

如果应用通过TCP访问数据库,优先把TLS连通性作为验收项。没法立刻启用TLS的环境,要确认客户端和服务端的RSA公钥交换配置;不要为了跳过这个检查把连接降级成明文传输密码的不安全模式。

迁移的常规顺序是:预发账号 → 单台线上实例 → 同一服务其余实例 → 其余服务账号。每一步都观察新建连接数、认证失败日志和接口错误率。这里的重点不是改SQL的速度,是确认连接池销毁旧连接之后,新连接还能正常恢复。

MySQL 8.4 从灰度切换到 TLS 首连验证和稳定连接的认证迁移路径

临时兼容开关应该放在什么位置

确实有遗留客户端短期内没法升级的情况,MySQL 8.4可以在服务端配置里临时设置 mysql_native_password=ON,让旧账号恢复可用。这是用来争取迁移时间的手段,不是最终修复:它只是保留已经弃用的认证路径,也解决不了 MySQL 9.0 已经彻底移除旧插件的问题。

把这个开关和到期日期一起写到变更单里,同时记录还没迁移的账号、对应的服务负责人和驱动升级计划。等最后一个旧账号完成迁移,再移除开关并做一次冷启动回归,才算真正收尾。

发布前后各做一次小而严的核对

  • 发布前:导出旧认证账号列表,确认每个账号都能找到对应的所属服务。
  • 发布中:每改完一个账号,就从对应应用的容器或者服务器上发起全新连接做验证。
  • 发布后:持续观察认证失败日志、连接池建连失败数和接口错误率。
  • 回退边界:仅在MySQL 8.4的短期窗口内使用旧插件开关,把未迁移账号明确标注为风险项。

一次平稳升级的标志不是“数据库启动成功”,是旧连接被替换之后,所有实际调用方都能正常完成认证。把账号盘点和冷启动首连步骤写到升级检查清单里,后面升级补丁版本的时候也能直接复用。

相关问题

能不能只修改 default_authentication_plugin?

别把它当成 MySQL 8.4 的完整迁移方案。新建账号的默认行为和存量账号用的认证插件是两回事,存量账号还是要逐个盘点和迁移。

改成 caching_sha2_password 后为什么只有第一次连接失败?

先排查TLS或者RSA公钥交换配置。认证缓存命中之后连接表现可能完全正常,但缓存清空、服务重启或者密码变更之后,会重新触发首连校验逻辑。

旧 JDBC 或其他驱动一定不能用吗?

不能只凭版本号直接下判断。用对应版本的驱动、实际的连接参数和冷启动后的数据库做一次真实建连测试,再决定是升级驱动还是调整安全连接配置。

临时启用旧插件后还需要迁移吗?

需要。临时开关只是给遗留系统留出改造窗口,后续大版本已经不再提供旧插件,迁移计划不能省。

收尾:把认证改造变成可重复的升级动作

这次改造真正值得沉淀的是两份清单:哪些账号还在依赖旧认证,哪些客户端能在冷启动之后正常安全建连。账号归属清晰、灰度步骤足够细碎、首连验证全部做完,MySQL 8.4的认证变化就不会在发布夜里变成无从下手的故障。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Go 批量算文件 SHA-256 时怎么优雅取消:做一个有并发上限的哈希小工具Go 批量算文件 SHA-256 时怎么优雅取消:做一个有并发上限的哈希小工具
上一篇
Go 批量算文件 SHA-256 时怎么优雅取消:做一个有并发上限的哈希小工具
PostgreSQL 19 Beta 2 发布后怎么测升级:把真实业务数据链跑一遍
下一篇
PostgreSQL 19 Beta 2 发布后怎么测升级:把真实业务数据链跑一遍
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    4637次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    4251次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    4207次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    4432次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    4386次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码