当前位置: 首页 > news >正文

MySQL8.0升级到MySQL8.4避坑:密码插件问题

对于广大运维和DBA来说,MySQL8.0即将结束官方支持(EOL)已经是板上钉钉的事。按照Oracle官方的版本生命周期策略,MySQL8.0的常规支持周期逐步收尾,后续仅保留有限的安全修复,不再提供功能更新与全面技术支持。

为了保障业务稳定性、安全性并获得新特性,将集群升级至MySQL8.4 LTS(长期支持版本)成为绝大多数企业的首选方案。

而生产环境最稳妥的升级路径,几乎都是这套标准流程:

  • 搭建一套全新MySQL8.4从库

  • 通过mysqldump从MySQL8.0主库全量备份,再导入到MySQL8.4从库

  • 配置主从复制,完成数据同步

  • 应用连接8.4从库做兼容性、性能、功能验证

  • 验证无误后,逐步切换流量,完成平滑升级

但就在第四步应用连接MySQL8.4从库测试时,很多同学直接踩坑,抛出了这样的经典报错:

time=2026-04-13T19:53:17.765+08:00 level=ERROR source=exporter.go:154 msg="Error opening connection to database" err="Error 1524 (HY000): Plugin 'mysql_native_password' is not loaded"

明明主库8.0连接一切正常,全量数据也导入成功,为什么从库8.4就连不上?核心原因只有一个:MySQL8.4已默认禁用mysql_native_password认证插件。

一、MySQL8.4对mysql_native_password的关键变更

我们直接对照MySQL官方说明,核心变更如下:

1. mysql_native_password服务端插件默认禁用

MySQL8.0之前默认密码认证插件式mysql_native_password,MySQL8.0中,mysql_native_password虽不是默认认证插件,但始终默认加载;到了MySQL8.4,该插件直接默认不加载,这是报错的直接根源。

2. 该插件已被正式标记废弃(Deprecated)

官方明确:mysql_native_password从8.0.34开始废弃,在MySQL9.0版本中彻底移除。

3. 默认认证插件保持caching_sha2_password

MYSQL8.0/8.4的默认认证插件一致,但MySQL8.4不再兼容旧的原生密码插件,导致从MySQL8.0同步过来的、使用mysql_native_password的业务用户无法连接。

4. 为什么mysqldump导入后会触发报错?

使用mysqldump全量备份MySQL8.0主库时,mysql.user系统表中的用户、密码、认证插件信息会被一并导出。这些在MySQL8.0中正常使用mysql_native_password的账号,导入MySQL8.4后,因插件未加载,直接认证失败。

二、解决方案

针对先搭从库做兼容性测试的升级场景,我们分快速临时方案(优先保障业务验证)和长期合规方案(彻底告别废弃插件)两种,DBA可按需选择。

1. 方案1:临时启用mysql_native_password插件

此方案不改动业务账号,仅开启MySQL8.4从库的兼容插件,完成升级验证后再逐步整改。

1.1 修改MySQL8.4配置文件

编辑my.cnf/my.ini,在[mysqld]模块添加:

[mysqld]# 启用mysql_native_password插件(MySQL8.4专用参数)mysql_native_password=ON

重要禁忌:

不要使用旧参数default_authentication_plugin=mysql_native_password

该参数在MySQL8.4中已移除,配置会直接导致数据库启动失败。

1.2 重启MySQL8.4服务

# CentOS/RHEL systemdsystemctl restart mysqld# Debian/Ubuntusystemctl restart mysql

1.3 验证插件状态

登录MySQL执行:

SELECT PLUGIN_NAME, PLUGIN_STATUSFROM information_schema.PLUGINSWHERE PLUGIN_NAME = 'mysql_native_password';

显示PLUGIN_STATUS:ACTIVE即为生效,应用即可正常连接从库。

2. 方案2:迁移至官方推荐caching_sha2_password

升级MYSQL8.4的核心目的之一就是拥抱安全规范,彻底弃用废弃插件才是符合官方建议的最终方案。

2.1. 先启用插件

按方案1开启mysql_native_password,避免业务断连。

2.2 筛查所有旧认证方式用户

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

2.3 批量修改用户认证插件

# 单用户修改ALTER USER 'exporter'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Tt0008167'# 批量修改后刷新权限UPDATE mysql.user SET plugin='caching_sha2_password' WHERE plugin='mysql_native_password';FLUSH PRIVILEGES;

2.4 驱动兼容检查

确保业务驱动支持caching_sha2_password:

  • JDBC:8.0+版本

  • Go MySQL Driver:最新版

  • PHP:7.4 + 且启用 nd_mysql

  • Python:mysql-connector-python 8.0+

2.5. 关闭兼容插件

所有用户迁移完成后,删除配置文件中的mysql_native_password=ON,重启服务即可彻底禁用。

三、总结

MySQL8.4默认禁用mysql_native_password插件是数据库安全和技术演进的必然趋势。短期可通过启用插件快速解决连接问题,但长期来看,迁移到caching_sha2_password认证方式才是根本解决方案。

在升级或添加MySQL8.4从库时,建议提前规划用户认证迁移工作,避免因认证方式不兼容导致业务中断。同时,关注MySQL官方文档,及时了解认证机制的最新变化,确保数据库架构的安全性和前瞻性。

大家在MySQL数据库升级过程中遇到哪些问题,也可以在留言区进行交流。

http://www.jsqmd.com/news/643459/

相关文章:

  • Qwen2.5-VL-7B-Instruct快速上手:网页截图→响应式HTML→CSS样式生成
  • Pixel Epic智识终端入门教程:动态卷轴流式输出与中断续写功能详解
  • 忍者像素绘卷:天界画坊Proteus仿真联动:为电子设计添加像素艺术界面
  • UiPath003 创建基本库
  • Ubuntu 20.04下快速配置Fcitx框架与谷歌拼音输入法
  • 2026年行业内二次元投影仪生产公司,影像测量仪/2.5次元测量仪/二次元检测仪/三次元测量仪,二次元投影仪研发哪个好 - 品牌推荐师
  • JS逆向|猿人学逆向反混淆练习平台第13题加密分析
  • Gemma-3-12b-it API封装教程:FastAPI接口开发与图文请求适配
  • OpenClaw人人养虾:openclaw logs
  • 亚洲美女-造相Z-Turbo创意工坊案例:独立艺术家用其生成NFT系列《东方十二时辰》
  • 2026奇点大会多模态翻译系统深度拆解(语音-文本-图像三模态联合推理引擎首次公开)
  • 【仅限首批读者】AIAgent隐私合规自检工具包(含12项自动扫描规则+OWASP AI-Top10映射矩阵)限时开放下载
  • 可灵会员邀请码6B3CRST3TFBL
  • Qwen3-32B长文本处理实战:128K上下文,轻松分析整本电子书
  • Java的java.util.random.RandomGenerator随机数算法实现细节
  • 196.删除重复的电子邮箱
  • MiniCPM-o-4.5-nvidia-FlagOS构建智能知识库:结合向量数据库实现精准问答
  • Nanbeige4.1-3B应用场景:制造业设备维修手册QA系统,支持PDF/图片OCR混合输入
  • 单细胞蛋白组Abseq联合流式技术,深度解锁肿瘤与感染免疫差异奥秘
  • PySide6多线程避坑指南:手把手教你用QMutex和QWaitCondition安全地暂停与恢复线程
  • Canvas Quest提示词安全与内容过滤配置教程
  • 终极Windows优化指南:3分钟用Win11Debloat释放系统性能
  • HarmonyOS 6学习:弹窗生命周期管理与异常处理实战
  • 4月15日成都地区宝钢产无缝钢管(8163-20#;外径42-630mm)现货报价 - 四川盛世钢联营销中心
  • 文墨共鸣实操手册:基于阿里达摩院StructBERT的古风AI应用落地
  • Rust的#[track_caller]:在panic信息中记录调用位置
  • 为什么说2026是AIAgent向AGI跃迁的关键窗口期?SITS2026圆桌闭门纪要首度流出(含时间锚点+技术拐点)
  • Go语言如何遍历目录文件_Go语言filepath.Walk教程【实战】
  • Qwen3-4B-Instruct-2507入门指南:一键启动vLLM服务,Chainlit轻松对话
  • Qwen2-VL-2B-Instruct部署教程:CUDA自动检测+6GB显存最低配置实测指南