1,authentication_string
這是Mysql8.0新所做的修改,在舊版中使用的是password()函式。
2,在網路上找到的「mysql忘記密碼」的解決方案中,大多會使用UPDATE user SET authentication_string="12345" WHERE user="root";
來直接將密碼改成12345,其實這是錯誤的用法,authentication_string中儲存的是密文,如果直接改為"12345"這樣的明文會導緻密碼錯誤登入不上。
原因是伺服器在驗證身分時會先將使用者輸入的明文轉為密文與資料庫中的密文作對比驗證是否匹配,而直接在本應放密文的地方放入明文顯然不會讓它們匹配成功。
3,在網路上近似的搜尋結果「mysql修改密碼」中,會使用alter user root@localhost identified by '12345'
來修改密碼,這句指令在「跳過授權表」時是使用不了的,唯有正常模式下可以使用
4,才有了這樣的解決方法,先將authentication_string變成空,畢竟空值的明文密文都是空值,用空密碼進入mysql正常模式後再使用alter將密碼改掉即可。
1,停止mysql服務
net stop mysql
2,輸入指令,進入「跳過授權表」模式
mysqld --console --skip-grant-tables --shared-memory
3,上一個cmd窗口先放一旁,另開個管理員cmd窗口,輸入mysql
進入mysql服務
4,輸入use mysql
進入mysql資料庫,再將authentication_string改為空
USE mysql; UPDATE user SET authentication_string="" WHERE user="root";
5,刷新權限,退出
FLUSH privileges; exit;
6,第一個cmd視窗中,使用ctrl c
#退出「跳過授權表」模式,啟動mysql服務
net start mysql
7,使用空密碼進行登錄,然後使用alter語句更新密碼,刷新權限,退出
mysql -uroot -p
alter user root@localhost identified by '12345' FLUSH privileges; exit
#8,嘗試使用密碼登錄,成功。
以上是MySQL8.0/8.x忘記密碼怎麼更改root密碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!