如何在MySQL 8.0中重置用户密码

e7arh2l6  于 2023-01-25  发布在  Mysql
关注(0)|答案(1)|浏览(200)

我的问题和详细信息

我想在MySQL8.0中更改一个用户的密码,但似乎网上几乎所有的方法都不起作用。
下面是我的mysql.user表的详细信息:

mysql> select user, host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Excalibur        | %         |
| yyy              | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+

我所做的一切

我试过了

alter user 'yyy'@'%' identified with mysql_native_password by '12345';

并收到错误消息:

ERROR 1396 (HY000): Operation ALTER USER failed for 'yyy'@'%'

我还尝试自己操作mysql.user表:

update user set authentication_string=sha1('12345') where user = 'yyy' ;
flush privileges;

虽然成功了,但是我不能用(我应该是的)密码12345登录yyy.然后我看了一下表格,确实很奇怪:

+------------------+-----------+------------------------------------------------------------------------+
| user             | host      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| Excalibur        | %         | $A$005$tE.D2|7^FTRYjmg1APzveuTWyJ1BaO2al1GKvO3UJO6ZlX06jqbNkT5 |
| yyy              | %         | 8cb2237d0679ca88db6464eac60da96345513964                               |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
...
z9smfwbn

z9smfwbn1#

适用于MySQL 8.0
一般用户使用以下命令更改密码

ALTER USER 'userName'@'localhost' IDENTIFIED BY 'New-Password-Here';

root用户使用以下命令更改密码
P.S检查是否使用密码,线索“$A$005$”应使用caching_sha2_password身份验证插件,如果没有,“WITH caching_sha2_password”将不会对root用户起作用。如果一般用户需要,应授予权限。

ALTER USER 'userName'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'New-Password-Here';

相关问题