文章

ER_NOT_SUPPORTED_AUTH_MODE

ER_NOT_SUPPORTED_AUTH_MODE

错误提示 Plugin 'mysql_native_password' is not loaded 说明 MySQL 中没有加载 mysql_native_password 插件,导致无法使用该认证方式。这通常是因为 MySQL 配置中禁用了该插件,或插件文件缺失。

解决方法:启用 mysql_native_password 插件

1. 检查插件是否安装

登录 MySQL 后,执行以下命令查看已安装的插件:

1
SHOW PLUGINS;

在输出中查找 mysql_native_password,如果没有则需要手动加载。

2. 临时加载插件(重启 MySQL 后失效,适合测试)

在 MySQL 命令行中直接加载插件:

1
INSTALL PLUGIN mysql_native_password SONAME 'mysql_native_password.so';
  • 若提示 Plugin is already installed,说明插件已存在,直接进入步骤 3。
  • 若执行成功,插件会被临时加载,可继续修改用户认证方式。

3. 永久启用插件(推荐,避免重启后失效)

需要修改 MySQL 配置文件,确保插件在启动时自动加载:

  1. 编辑 MySQL 配置文件(通常为 /etc/my.cnf/etc/mysql/my.cnf):
    1
    
    vim /etc/my.cnf
    
  2. [mysqld] 段落下添加以下内容:
    1
    2
    3
    
    [mysqld]
    plugin-load-add = mysql_native_password.so
    mysql_native_password = ON
    
  3. 保存文件并重启 MySQL 服务:
    1
    
    systemctl restart mysqld
    

4. 重新修改用户认证方式

插件加载成功后,再次执行修改用户的命令:

1
2
ALTER USER 'waline'@'%' IDENTIFIED WITH mysql_native_password BY '密码';
FLUSH PRIVILEGES;

5. 验证结果

确认用户 waline 的认证插件已改为 mysql_native_password

1
SELECT user, host, plugin FROM mysql.user WHERE user = 'waline' AND host = '%';

补充说明

  • mysql_native_password 是 MySQL 的内置插件,通常随 MySQL 一起安装,缺失的情况较少见。若步骤 2 提示插件文件不存在,可能是 MySQL 安装不完整,建议重新安装官方版本的 MySQL。
  • 操作完成后,依赖 waline 用户的应用(如 Waline 服务)需重启以重新建立连接。

按照以上步骤,即可解决插件未加载的问题,顺利修改用户认证方式。

本文由作者按照 CC BY 4.0 进行授权