Ich möchte das Passwort eines Benutzers in MySQL8.0 ändern, aber fast keine der Online-Methoden scheint zu funktionieren.
Hier sind meine mysql.user-Tabellendetails:
mysql> select user, host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | Excalibur | % | | yyy | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +------------------+-----------+
Ich habe folgende Befehle ausprobiert:
alter user 'yyy'@'%' identified with mysql_native_password by '12345';
und erhielt die Fehlermeldung:
ERROR 1396 (HY000): Operation ALTER USER failed for 'yyy'@'%'
Ich habe auch versucht, die mysql.user-Tabelle selbst zu manipulieren:
update user set authentication_string=sha1('12345') where user = 'yyy' ; flush privileges;
Obwohl es funktioniert, kann ich mich nicht mit dem Passwort 12345 bei yyy anmelden. Dann habe ich einen Blick auf die Tabelle geworfen und es sah wirklich seltsam aus:
+------------------+-----------+------------------------------------------------------------------------+ | user | host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | Excalibur | % | $Arrreee5$tE.D2|7^FTRYjmg1APzveuTWyJ1BaO2al1GKvO3UJO6ZlX06jqbNkT5 | | yyy | % | 8cb2237d0679ca88db6464eac60da96345513964 | | mysql.infoschema | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | ...
对于 MySQL 8.0
普通用户使用以下命令更改密码
root用户使用以下命令更改密码
P.S 检查使用带有“$A$005$”的密码,应该使用 caching_sha2_password 身份验证插件,如果没有“WITH caching_sha2_password”将不适用于 root 用户。如果是一般用户 需要授予权限。