首頁  >  文章  >  資料庫  >  MySQL8.0/8.x忘記密碼怎麼更改root密碼

MySQL8.0/8.x忘記密碼怎麼更改root密碼

WBOY
WBOY轉載
2023-06-03 21:01:061962瀏覽

一、原理說明

1,authentication_string這是Mysql8.0新所做的修改,在舊版中使用的是password()函式。

2,在網路上找到的「mysql忘記密碼」的解決方案中,大多會使用UPDATE user SET authentication_string="12345" WHERE user="root";來直接將密碼改成12345,其實這是錯誤的用法,authentication_string中儲存的是密文,如果直接改為"12345"這樣的明文會導緻密碼錯誤登入不上。

原因是伺服器在驗證身分時會先將使用者輸入的明文轉為密文與資料庫中的密文作對比驗證是否匹配,而直接在本應放密文的地方放入明文顯然不會讓它們匹配成功。

MySQL8.0/8.x忘記密碼怎麼更改root密碼

3,在網路上近似的搜尋結果「mysql修改密碼」中,會使用alter user root@localhost identified by '12345'來修改密碼,這句指令在「跳過授權表」時是使用不了的,唯有正常模式下可以使用

MySQL8.0/8.x忘記密碼怎麼更改root密碼

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

MySQL8.0/8.x忘記密碼怎麼更改root密碼

二、解決步驟

1,停止mysql服務

net stop mysql

MySQL8.0/8.x忘記密碼怎麼更改root密碼

2,輸入指令,進入「跳過授權表」模式

mysqld --console --skip-grant-tables --shared-memory

MySQL8.0/8.x忘記密碼怎麼更改root密碼

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

MySQL8.0/8.x忘記密碼怎麼更改root密碼

4,輸入use mysql進入mysql資料庫,再將authentication_string改為空

USE mysql;
UPDATE user SET authentication_string="" WHERE user="root";

MySQL8.0/8.x忘記密碼怎麼更改root密碼

5,刷新權限,退出

FLUSH privileges;
exit;

MySQL8.0/8.x忘記密碼怎麼更改root密碼

6,第一個cmd視窗中,使用ctrl c#退出「跳過授權表」模式,啟動mysql服務

net start mysql

MySQL8.0/8.x忘記密碼怎麼更改root密碼

7,使用空密碼進行登錄,然後使用alter語句更新密碼,刷新權限,退出

mysql -uroot -p
alter user root@localhost identified by '12345'
FLUSH privileges;
exit

MySQL8.0/8.x忘記密碼怎麼更改root密碼

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

MySQL8.0/8.x忘記密碼怎麼更改root密碼

以上是MySQL8.0/8.x忘記密碼怎麼更改root密碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除