如何解决MySQL错误 "ERROR 1396 (HY000): Operation ALTER USER failed for 'myuser'@'localhost'?"

5

我正在尝试更改MySQL数据库中某个用户的密码。

当我执行以下命令时:

ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';

我收到如下错误信息:
ERROR 1396 (HY000):'myuser@localhost' 用户的 ALTER USER 操作失败。
以下是更多细节:
- 我正在使用 root 账户执行此操作。 - 当我执行 SELECT User, Host FROM mysql.user; 时,我可以看到 myuser 的名称。 - 我要更改密码的用户可能正在使用中,因为它是一个非常常见的用户。
有人能解释一下我为什么会出现这个错误吗?
如果用户已经登录是导致错误的原因,那么解决方案是什么?
这是我的 MySQL 版本:
mysql Ver 14.14 Distrib 5.7.33,适用于 Linux (x86_64),使用 EditLine wrapper Alexandre
2个回答

3

您使用了'myuser'@'localhost'

您应该进行检查

select * from mysql.user;

用户可以访问哪些主机。

如果主机是%

ALTER USER 'myuser'@'%' IDENTIFIED BY 'mypassword';

非常感谢nbk,这是正确的答案,也为我节省了几个小时! - AlexandrePhili

1
在我的情况下,我曾尝试过手动更改authentication_string数据。之后,我既无法更改密码,也无法使用我提供的新密码进行登录。我使用了SHA1(UNHEX(SHA1("password")))算法来手动更新密码,结果发现我的MySQL版本使用了不同的算法。
此时,您需要确定您的MySQL版本使用的确切算法,然后手动更新authentication_string。否则,使用ALTERIDENTIFIED BY语句几乎不可能更改密码。
对于我的情况,唯一的解决方法是DROP该用户,然后重新创建该用户。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接