在MySQL8.4中如何处理弃用mysql native password问题

雨杰大大_7261

雨杰大大_7261

2026-10-04

314人浏览

原创

MySQL 8.4默认不加载mysql_native_password插件,导致ALTER USER报错ERROR 1524;需先在my.cnf中添加mysql_native_password=ON并重启服务启用插件,再执行ALTER USER和FLUSH PRIVILEGES切换用户认证方式。

在mysql8.4中如何处理弃用mysql native password问题

MySQL 8.4 中 mysql_native_password 插件默认不加载,不是配置错了,也不是密码问题,是服务端压根没注册这个插件——直接执行 ALTER USER ... IDENTIFIED WITH mysql_native_password 必然报 ERROR 1524 (HY000)。

为什么 ALTER USER 报错 “Plugin 'mysql_native_password' is not loaded”

这不是客户端或密码的问题,而是 MySQL 8.4 启动时根本没加载该插件。即使你没在配置里禁用它,它也处于未注册状态。执行认证方式变更操作前,服务端必须先“认识”这个插件。

  • SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'mysql_native_password'; 返回空结果,就确认未加载
  • 旧版 mysqldump 导入的用户带 plugin='mysql_native_password' 字段,但服务端不认识,登录直接拒
  • 错误信息末尾常附带 Authentication plugin 'mysql_native_password' cannot be loaded,这是关键线索

如何永久启用 mysql_native_password 插件(推荐)

修改配置文件后重启,是最稳定、可复现的方式。注意写法和位置必须准确。

  • 编辑 /etc/my.cnf(Linux/macOS)或 C:\ProgramData\MySQL\MySQL Server 8.4\my.ini(Windows)
  • 在 [mysqld] 段末尾添加一行:mysql_native_password=ON(不是 default_authentication_plugin,后者会导致启动失败)
  • 保存后执行 systemctl restart mysqld(Linux)或 net stop mysql84 && net start mysql84(Windows)
  • 重启后再次查 INFORMATION_SCHEMA.PLUGINS,应看到 ACTIVE 状态

如何为用户切换认证插件并避免断连

插件启用后才能改用户,但不能无差别硬切 'root'@'%' —— 这会切断远程管理链路。

图片转Word
图片转Word

将扫描图像、截图或表单、文档及以文字为主的图片内容,转换为可编辑的 Word(.docx)文件。 当用户提供包含文本内容的图片,并要求将其转为 Word 文档时,应使用此技能; 或用户表达类似“把图片搞成 word 文字版”、“convert image to docx”、“extract text from image to Word”等需求时,也应调用此技能。

下载
  • 优先锁定本地:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPass2026!';
  • 远程应用账号单独建:CREATE USER 'appuser'@'192.168.10.%' IDENTIFIED WITH mysql_native_password BY 'pass123';
  • 切忌用旧语法 GRANT ... IDENTIFIED BY,MySQL 8.4 已废弃该写法,会报 ERROR 1064
  • 每次修改后必须执行 FLUSH PRIVILEGES;,否则新 plugin 值不生效

客户端连不上?先确认它实际协商的是哪个插件

Navicat 15 以下、PyMySQL mysql_native_password,它们不会自动降级或协商 caching_sha2_password。

  • 连接失败时,不要只改服务器配置,先看客户端日志是否出现 Authentication plugin 'caching_sha2_password' is not supported
  • 若无法升级客户端,就只能启用 mysql_native_password 插件 + 单独建兼容账号
  • 若可升级客户端,长期更推荐把用户迁移到 caching_sha2_password:ALTER USER 'u'@'h' IDENTIFIED WITH caching_sha2_password BY 'plain_password';
  • 注意:不能对 authentication_string 字段手动 UPDATE,哈希必须由插件内部生成

最易被忽略的一点:插件启用和用户修改是两个独立步骤,缺一不可;且 FLUSH PRIVILEGES 不是可选操作,它是让权限表变更真正生效的必要动作。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4663

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

971

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1229

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6661

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

3403

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6640

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

9161

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1230

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1092

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 193人学习