MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟(親測有效!)
一、原理說明
1,authentication_string這是Mysql8.0新做出的修改,在舊版本中使用的是password()函數(shù)。
2,在網(wǎng)上找到的“mysql忘記密碼”的解決方案中,大多會使用UPDATE user SET authentication_string="12345" WHERE user="root";來直接將密碼改成12345,實際上這是錯誤的用法,authentication_string中存儲的是密文,如果直接改為"12345"這樣的明文會導(dǎo)致密碼錯誤登錄不上。
原因是服務(wù)器在驗證身份時會先將用戶輸入的明文轉(zhuǎn)為密文與數(shù)據(jù)庫中的密文作對比驗證是否匹配,而直接在本應(yīng)放密文的地方放入明文顯然不會讓它們匹配成功。

3,在網(wǎng)上近似的搜索結(jié)果“mysql修改密碼”中,會使用alter user root@localhost identified by '12345'來修改密碼,這句命令在“跳過授權(quán)表”時是使用不了的,唯有正常模式下可以使用

4,才有了這樣的解決方法,先將authentication_string變?yōu)榭?,畢竟空值的明文密文都是空值,用空密碼進入mysql正常模式后再使用alter將密碼改掉即可。

二、解決步驟
1,停止mysql服務(wù)
net stop mysql

2,輸入命令,進入“跳過授權(quán)表”模式
mysqld --console --skip-grant-tables --shared-memory

3,上一個cmd窗口先放一旁,另開個管理員cmd窗口,輸入mysql進入mysql服務(wù)

4,輸入use mysql進入mysql數(shù)據(jù)庫,再將authentication_string改為空
USE mysql; UPDATE user SET authentication_string="" WHERE user="root";

5,刷新權(quán)限,退出
FLUSH privileges; exit;

6,第一個cmd窗口中,使用ctrl+c退出“跳過授權(quán)表”模式,啟動mysql服務(wù)
net start mysql

7,使用空密碼進行登錄,然后使用alter語句更新密碼,刷新權(quán)限,退出
mysql -uroot -p
alter user root@localhost identified by '12345' FLUSH privileges; exit

8,嘗試使用密碼登錄,成功。

總結(jié)
到此這篇關(guān)于MySQL8.0/8.x忘記密碼更改root密碼的文章就介紹到這了,更多相關(guān)MySQL8.x忘記密碼更改root密碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql導(dǎo)出指定數(shù)據(jù)或部份數(shù)據(jù)的方法
mysql雖然可以使用mysqldump來進行數(shù)據(jù)的到處,可是在很多場合的需求都不一樣,比如我只要導(dǎo)出某個字段呢?只要導(dǎo)出某些我需要的數(shù)據(jù)呢?2014-03-03
Mysql查詢?nèi)掌趖imestamp格式的數(shù)據(jù)實現(xiàn)
本文主要介紹了Mysql查詢?nèi)掌趖imestamp格式的數(shù)據(jù)實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

