ERROR 1524 (HY000): Plugin ‘mysql_native_password‘ is not loaded

你遇到的错误是由于 MySQL 版本不再默认支持 mysql_native_password 认证插件导致的。从 MySQL 8.0 开始,默认的认证插件是 caching_sha2_password,而不是 mysql_native_password

解释:

  • 错误 ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded 表示 MySQL 中没有加载或支持 mysql_native_password 插件。
  • 从 MySQL 8.0 开始,mysql_native_password 插件已经被弃用,默认采用 caching_sha2_password 插件。

解决方法:

如果你必须使用 mysql_native_password 插件,可以尝试以下方法:

方法 1: 使用 caching_sha2_password 插件

你可以使用默认的 caching_sha2_password 插件来设置密码,而不使用 mysql_native_password

ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'root';

这将使用默认的 caching_sha2_password 插件,并设置 root 用户的密码为 root

方法 2: 启用 mysql_native_password 插件(不推荐)

如果你确实需要使用 mysql_native_password 插件,你可以手动启用它,虽然这不建议在最新版本中使用。可以通过修改 MySQL 配置文件来加载该插件:

  1. 编辑 MySQL 配置文件(通常在 /etc/mysql/my.cnf/etc/my.cnf)。

  2. [mysqld] 部分添加以下行以启用 mysql_native_password 插件:

    default_authentication_plugin=mysql_native_password
    
  3. 保存文件并重启 MySQL 服务:

    sudo systemctl restart mysql
    
  4. 然后再次运行以下命令来设置密码:

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    
方法 3: 为兼容性指定插件

如果你只想为某个用户启用 mysql_native_password 插件,可以在用户创建或修改时指定插件,如下所示:

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

或者修改现有用户:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

建议:

MySQL 8.0 及之后的版本推荐使用 caching_sha2_password 插件,因为它提供了更高的安全性和性能。如果没有特别的兼容性需求,建议使用 caching_sha2_password 插件。

你可以尝试方法 1 来解决当前问题,并避免使用 mysql_native_password 插件。

### 解决 MySQL 错误 1524 `mysql_native_password` 插件未加载 当遇到 MySQL 错误 1524,提示 `Plugin 'mysql_native_password' is not loaded` 时,这通常是因为 MySQL 服务器未能成功加载所需的认证插件。自 MySQL 8.0 版本以来,默认的身份验证插件变更为 `caching_sha2_password`,而非之前的 `mysql_native_password`。 为了修正此问题,可以采取以下措施: #### 方法一:启用并安装 `mysql_native_password` 插件 如果希望继续使用 `mysql_native_password` 而不是新的默认插件,则可以通过执行 SQL 查询来更改用户的认证方法,并确保插件已正确安装和激活: ```sql -- 安装 mysql_native_password 插件(仅需一次) INSTALL PLUGIN mysql_native_password SONAME 'auth.so'; -- 更新现有账户以使用 mysql_native_password 认证方式 ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; ``` 上述操作会强制指定用户采用旧版的加密算法进行身份验证[^3]。 #### 方法二:调整新创建用户的默认认证机制 对于新建账号来说,可以在初始化阶段就指明要使用的具体认证协议,这样就不必事后修改了。例如,在创建一个新的超级管理员角色时可以直接这样做: ```sql CREATE USER 'admin_user'@'%' IDENTIFIED WITH mysql_native_password BY 'secure_password!'; GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'%'; FLUSH PRIVILEGES; ``` 这种方法适用于那些偏好传统认证流程的应用场景或者遗留系统迁移项目中[^4]。 #### 方法三:全局变更默认认证插件设置 更进一步地讲,还可以考虑在整个实例级别上改变默认的行为模式——即将整个 MySQL 实例恢复成以前版本的工作状态,即让所有新增加的用户都自动关联至 `mysql_native_password` 。为此目的,编辑 my.cnf 或者 my.ini 文件下的 `[mysqld]` 部分加入如下参数即可实现这一目标: ```ini default_authentication_plugin=mysql_native_password ``` 保存文件后重启服务使改动生效[^5]。 以上三种方案任选其一都能有效处理因缺少必要的认证组件而导致无法正常工作的状况;当然也可以根据实际情况组合运用这些技巧达到最佳效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MonkeyKing.sun

对你有帮助的话,可以打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值