mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
时间: 2025-03-20 08:03:40 浏览: 48
### 解决方案
当遇到 `ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded` 错误时,其根本原因是 MySQL 不再默认支持 `mysql_native_password` 认证插件[^1]。从 MySQL 8.0 开始,默认的认证插件变更为 `caching_sha2_password`,而 `mysql_native_password` 被标记为可选插件[^2]。
以下是具体的解决方案:
#### 方法一:切换到 `caching_sha2_password`
如果可以接受使用新的认证方式,则无需启用旧版插件。可以通过以下命令更改用户的认证插件为 `caching_sha2_password` 并设置密码:
```sql
ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY '新密码';
FLUSH PRIVILEGES;
```
此方法适用于希望保持最新安全特性的场景,并且不需要额外安装任何插件。
---
#### 方法二:手动加载 `mysql_native_password` 插件
对于需要继续使用 `mysql_native_password` 的情况,需确认该插件已正确加载。运行以下查询来验证当前是否启用了 `mysql_native_password` 插件:
```sql
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME='mysql_native_password';
```
如果没有返回记录或者状态显示为 `DISABLED`,则说明插件尚未激活。此时可通过以下 SQL 启用它:
```sql
INSTALL SONAME 'auth_plugin_mysql_native_password.so';
```
注意:具体文件名可能因操作系统不同有所差异,请查阅官方文档获取对应平台下的确切名称[^3]。
完成上述操作后再次尝试修改用户身份验证机制即可成功执行原语句。
---
#### 方法三:调整配置文件强制指定默认插件
编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或者 `/etc/mysql/my.cnf`),找到 `[mysqld]` 段并加入下面一行内容以重新定义全局默认的身份验证协议:
```ini
default_authentication_plugin=mysql_native_password
```
保存更改之后重启服务使改动生效:
```bash
sudo systemctl restart mysqld
```
这样创建的新账户会自动关联至所设定的老式加密算法上从而规避掉之前碰到的问题。
---
### 总结
以上三种途径均可有效应对由认证模块缺失引发的相关异常状况;推荐优先考虑升级兼容模式即选用现代化的安全框架——`caching_sha2_password` 来替代老旧版本实现更佳防护效果的同时简化维护流程。
阅读全文
相关推荐



















