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)榭?,畢竟空值的明文密文都是空值,用空密碼進(jìn)入mysql正常模式后再使用alter將密碼改掉即可。
二、解決步驟
1,停止mysql服務(wù)
net stop mysql
2,輸入命令,進(jìn)入“跳過授權(quán)表”模式
mysqld --console --skip-grant-tables --shared-memory
3,上一個cmd窗口先放一旁,另開個管理員cmd窗口,輸入mysql
進(jìn)入mysql服務(wù)
4,輸入use mysql
進(jìn)入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,使用空密碼進(jìn)行登錄,然后使用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 的10大經(jīng)典優(yōu)化案例場景實戰(zhàn)
在應(yīng)用開發(fā)的早期,數(shù)據(jù)量少,開發(fā)人員開發(fā)功能時更重視功能上的實現(xiàn),隨著生產(chǎn)數(shù)據(jù)的增長,很多SQL語句開始暴露出性能問題,對生產(chǎn)的影響也越來越大,有時可能這些有問題的SQL就是整個系統(tǒng)性能的瓶頸。本文我們就聊聊MYSQL的優(yōu)化2021-09-099種 MySQL數(shù)據(jù)庫優(yōu)化的技巧
這篇文章小編主要給大家介紹的是 MySQL數(shù)據(jù)庫優(yōu)化的正確姿勢,九種方法呢?。。⌒枰男』锇橼s快收藏起來吧2021-09-09Mysql在項目中相關(guān)使用方法指南(簡單操作數(shù)據(jù)庫)
作為一名編程人員,對MySQL一定不會陌生,尤其是互聯(lián)網(wǎng)行業(yè),對MySQL的使用是比較多的,下面這篇文章主要給大家介紹了關(guān)于Mysql在項目中相關(guān)使用方法的相關(guān)資料,主要是簡單操作數(shù)據(jù)庫,需要的朋友可以參考下2022-08-08macOS 下的 MySQL 8.0.17 安裝與簡易配置教程圖解
這篇文章主要介紹了macOS 下的 MySQL 8.0.17 安裝與簡易配置教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09