mysql 1396_Mysql ERROR 1396 (HY000) 错误的解决办法

建立用户的时候报告这个错误:

ERROR 1396 (HY000): Operation CREATE USER failed for 'abc'@'localhost'

原因是mysql中已经有了这个用户,从mysql.user中直接删除delete,然后刷新权限FLUSH PRIVILEGES,再建用户就不会有这个问题了。

如果是drop user 的话,mysql内部会自动刷新一下,那么再建也不会有这问题了。

举例说明1——delete删除:

mysql> create user 'abc'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;

+------+-----------+

| user | host |

+------+-----------+

| root | 127.0.0.1 |

| abc | localhost |

| root | localhost |

+------+-----------+

3 rows in set (0.00 sec)

mysql> delete from user where user='abc';

Query OK, 1 row affected (0.00 sec)

mysql> select user,host from user;

+------+-----------+

| user | host |

+------+-----------+

| root | 127.0.0.1 |

| root | localhost |

+------+-----------+

2 rows in set (0.00 sec)

再次创建同名用户,报错如下:

mysql> create user 'abc'@'localhost';

ERROR 1396 (HY000): Operation CREATE USER failed for 'abc'@'localhost'

这里要刷新权限,刷新之后就可以创建了;

mysql>flush privileges;

Query OK, 0 rows affected (0.00 sec)

mysql> create user 'abc'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;

+------+-----------+

| user | host |

+------+-----------+

| root | 127.0.0.1 |

| abc | localhost |

| root | localhost |

+------+-----------+

3 rows in set (0.00 sec)

举例说明2——drop 删除,可以直接创建:

mysql> drop user 'abc'@'localhost';

Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;

+------+-----------+

| user | host |

+------+-----------+

| root | 127.0.0.1 |

| root | localhost |

+------+-----------+

2 rows in set (0.00 sec)

mysql> create user 'abc'@'loaclhost';

Query OK, 0 rows affected (0.00 sec)

### 关于 MySQL 报错 ERROR 1524 (HY000) 当尝试通过 `ALTER USER` 修改用户的密码验证方式时,如果收到错误提示 **ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded**,这通常是因为当前版本的 MySQL 不再默认支持 `mysql_native_password` 验证插件。 #### 错误原因 此问题的根本原因是自 MySQL 8.0 开始,默认的身份验证插件已更改为 `caching_sha2_password`,而不再是传统的 `mysql_native_password`。因此,在某些配置下,可能无法找到或加载 `mysql_native_password` 插件[^2]。 --- #### 解决方案 以下是几种可行的方法来解决问题: 1. **切换到新的身份验证插件 (`caching_sha2_password`)** 如果可以接受使用新插件,则可以通过以下命令更改用户的身份验证机制: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH caching_sha2_password BY 'your_new_password'; ``` 2. **重新启用 `mysql_native_password`** 若仍需继续使用旧版插件,可通过修改用户设置实现兼容性: ```sql ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'your_new_password'; FLUSH PRIVILEGES; ``` 此外,还需确认服务器端是否启用了该插件。可以在启动 MySQL 的时候显式指定允许加载 `mysql_native_password` 插件。 3. **调整全局参数以强制回退至传统模式** 编辑 MySQL 配置文件(通常是 `/etc/mysql/my.cnf` 或其他路径),并添加以下内容: ```ini [mysqld] default_authentication_plugin=mysql_native_password ``` 完成编辑后重启服务使变更生效: ```bash sudo systemctl restart mysqld ``` 以上操作能够有效处理因插件缺失引发的相关异常情况[^4]。 --- ### 示例代码片段 假设需要将 root 用户恢复为基于 `mysql_native_password` 的认证形式,可参照如下 SQL 脚本执行: ```sql -- 更改用户认证方式为 mysql_native_password 并重设密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'SecurePassword123'; -- 刷新权限表以应用最新改动 FLUSH PRIVILEGES; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值