我想在MySQL8.0中修改一個(gè)用戶的密碼,但是網(wǎng)上的方法好像幾乎都行不通。
這是我的 mysql.user 表詳細(xì)信息:
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';
并收到錯(cuò)誤消息:
ERROR 1396 (HY000): Operation ALTER USER failed for 'yyy'@'%'
我還嘗試自己操作 mysql.user 表:
update user set authentication_string=sha1('12345') where user = 'yyy' ; flush privileges;
雖然它有效,但是我無法通過(我應(yīng)該是的)密碼12345登錄yyy。然后我看了一眼桌子,確實(shí)顯得很奇怪:
+------------------+-----------+------------------------------------------------------------------------+ | user | host | authentication_string | +------------------+-----------+------------------------------------------------------------------------+ | Excalibur | % | $Arrreee5$tE.D2|7^FTRYjmg1APzveuTWyJ1BaO2al1GKvO3UJO6ZlX06jqbNkT5 | | yyy | % | 8cb2237d0679ca88db6464eac60da96345513964 | | mysql.infoschema | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | | mysql.session | localhost | $Arrreee5$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | ...
對(duì)于 MySQL 8.0
普通用戶使用以下命令更改密碼
ALTER USER 'userName'@'localhost' IDENTIFIED BY 'New-Password-Here';
root用戶使用以下命令更改密碼
P.S 檢查使用帶有“$A$005$”的密碼,應(yīng)該使用 caching_sha2_password 身份驗(yàn)證插件,如果沒有“WITH caching_sha2_password”將不適用于 root 用戶。如果是一般用戶 需要授予權(quán)限。
ALTER USER 'userName'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'New-Password-Here';