【问题标题】:How to resolve MySQL error "ERROR 1396 (HY000): Operation ALTER USER failed for 'myuser'@'localhost'?"如何解决 MySQL 错误“ERROR 1396 (HY000): Operation ALTER USER failed for 'myuser'@'localhost'?”
【发布时间】:2021-04-01 16:26:43
【问题描述】:

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

当我这样做时:

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

我明白了:

错误 1396 (HY000):操作 ALTER USER 失败 'myuser'@'localhost'

这里有更多细节:

  • 我正在使用 root 帐户来执行此操作。
  • 另外,执行此操作时我可以看到 myuser 的名称: 从 mysql.user 中选择用户、主机;
  • 另外请注意,我尝试更改密码的用户可能正在使用中,因为它是一个非常普通的用户。

谁能解释我为什么会出现这个错误?

如果用户已经登录是我收到错误的原因,那么解决方案是什么?

这是我的 MySQL 版本: mysql Ver 14.14 Distrib 5.7.33,适用于 Linux (x86_64),使用 EditLine 包装器

亚历山大

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你使用'myuser'@'localhost'

    你应该检查

    select * from mysql.user;
    

    用户可以访问哪些主机。

    如果主机是%

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

    【讨论】:

    • 非常感谢 nbk,这是正确的答案,为我节省了几个小时!
    【解决方案2】:

    就我而言,我曾尝试手动更改 authentication_string 数据。之后我无法更改密码,最终用户也无法使用我提供的新密码登录。我使用SHA1(UNHEX(SHA1("password")))算法手动更新密码,结果发现我的MySQL版本使用了不同的算法。

    此时您需要确定您的 MySQL 版本使用的确切算法,然后手动更新 authentication_string。否则现在几乎不可能使用ALTERIDENTIFIED BY 语句更改密码。

    对于我的情况,唯一的解决方案是 DROP 用户并再次创建用户。

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 2017-12-18
      • 2013-09-05
      • 2014-01-09
      • 2011-07-30
      • 2015-03-08
      • 2020-05-23
      • 1970-01-01
      相关资源
      最近更新 更多