news 2026/4/15 6:38:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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数据库升级过程中遇到哪些问题,也可以在留言区进行交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 6:34:41

Qwen3.5-2B轻量模型:支持INT4量化部署,显存占用降低60%实测数据

Qwen3.5-2B轻量模型:支持INT4量化部署,显存占用降低60%实测数据 1. 模型概述 Qwen3.5-2B是通义千问系列中的轻量化多模态基础模型,专为低功耗、低门槛部署场景设计。作为20亿参数规模的轻量级模型,它在保持良好性能的同时&#…

作者头像 李华
网站建设 2026/4/15 6:32:14

Ostrakon-VL-8B效果展示:复杂反光价签仍准确提取数字与单位

Ostrakon-VL-8B效果展示:复杂反光价签仍准确提取数字与单位 1. 惊艳的价签识别能力 在零售场景中,价签识别一直是个技术难题。传统OCR技术面对反光、倾斜、模糊的价签时,识别准确率往往大幅下降。而Ostrakon-VL-8B模型在这个领域展现了惊人…

作者头像 李华
网站建设 2026/4/15 6:28:11

如何在CSS中正确加载本地JPG背景图片

本文详解html页面中css背景图(如telahome2.jpg)无法显示的常见原因及解决方案,涵盖路径写法、属性拆分、推荐实践与调试技巧,助你快速修复静态资源加载失败问题。 本文详解html页面中css背景图(如telahome2.jpg&a…

作者头像 李华
网站建设 2026/4/15 6:25:19

5分钟快速部署Clawdbot+Qwen3:32B:开箱即用的本地AI对话系统

5分钟快速部署ClawdbotQwen3:32B:开箱即用的本地AI对话系统 1. 快速入门指南 本文将带你快速部署一个基于Qwen3:32B大模型的本地AI对话系统。这个系统整合了Clawdbot前端界面和Ollama后端服务,通过内部代理实现无缝连接,让你在5分钟内就能拥…

作者头像 李华
网站建设 2026/4/15 6:21:11

腾讯音乐如何基于 AutoMQ 降低 Kafka 50%+ 成本

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…

作者头像 李华
网站建设 2026/4/15 6:20:13

从零到一:在M1 MacBook Pro上搭建全栈Java开发环境

1. 认识你的M1 MacBook Pro开发环境 刚拿到M1芯片MacBook Pro的Java开发者,首先要理解ARM架构带来的变化。M1芯片采用ARM64架构,这与传统Intel处理器的x86架构有本质区别。简单来说,就像汽油车和电动车虽然都是车,但发动机原理完全…

作者头像 李华