如何解决 ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'?

Lia*_*lin 15 mysql

我不能用 root 登录,我认为 root 的密码可能被更改。但我也无法更改 root 的密码。

Mysql 版本为 v8.0.16。

我曾经--init-file在 mysqld 启动时指定了 alter sql

alter user 'root'@'localhost' identified by 'mynewpassword'
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

我使用了--skip-grant-tables --user=mysql所以我可以添加一个新用户,我的新用户可以工作。我尝试更改 root,但它再次失败。

alter user 'root'@'localhost' identified by 'mynewpassword'
Run Code Online (Sandbox Code Playgroud)

这是表用户的内容

mysql> alter user 'root'@'localhost' identified by 'mynewpassword';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'

Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?

小智 47

你可以试试:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123';
Run Code Online (Sandbox Code Playgroud)

而不是

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
Run Code Online (Sandbox Code Playgroud)

当您使用以下命令时

mysql> use mysql;
mysql> select user,host from user;
Run Code Online (Sandbox Code Playgroud)

你可以发现root的主机是'%'

mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
+------------------+-----------+
Run Code Online (Sandbox Code Playgroud)

  • 为我工作。我还做了 FLUSH PRIVILEGES; (2认同)

Pir*_*ode 7

根据mysql 文档this - 检查特殊--init-file选项。然后尝试FLUSH PRIVILEGES;

另外,请参阅此相关帖子

这应该有帮助。