MySQL8.0.23版本的root密碼重置最優(yōu)解法
該方法編輯于2021年2月7日,自己使用的版本是8.0.23,事情的起因要從袁教授說(shuō)起…要從一本教科書(shū)說(shuō)起,有一章節(jié)是“MySQL安全管理與權(quán)限管理”,其中有提到更改root賬戶
ps:此方法適用于任何忘記,胡亂修改或已經(jīng)糟蹋root密碼的同學(xué)
本著實(shí)踐主義的精神,我在自己的MySQL數(shù)據(jù)庫(kù)中(當(dāng)前登陸為root賬戶)中敲下了:
update user set authentication_string=MD5("123") where user = "root" and host = "localhost";
flush privileges;
在這里不得不說(shuō)一下現(xiàn)在的百度google教程,同學(xué)可以先自己看一下自己的user表結(jié)構(gòu),在user表中一般而言,我們最關(guān)注三個(gè)字段,分別是localhost的host列,用戶名root的user列,以及保存密碼的authentication_string列
desc user;
注意:保存密碼的字段已經(jīng)不是password了(舊版本可能是,而且很多改root密碼教程也是還停留在password),其次我這個(gè)較新的版本已經(jīng)在這里不適用password函數(shù),教材使用的是MD5加密,目前仍然很多百度的都是下面這種,這個(gè)方法已經(jīng)完全不適用了
...password = password("123")...
當(dāng)我敲下上面的代碼之后,重新退出重啟服務(wù)器并嘗試使用新密碼123登陸的時(shí)候,吧唧…密碼錯(cuò)誤報(bào)錯(cuò)
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
之后就是連續(xù)三個(gè)小時(shí)的百度攻略,找回密碼操作…接連的失敗告終…
24小時(shí)之后,誤打誤撞的刪除了原authentication_string保存的密碼,然后重新設(shè)置新的密碼,下面上干貨,親測(cè)~
1.免密登錄
將mysql登陸設(shè)置為免密登陸(這一步我暫時(shí)不知道可不可以使用debian.cnf配置中的debian-sys-maint賬戶登陸進(jìn)行修改root的密碼,我怕debian權(quán)限不夠無(wú)法改動(dòng)root所以還是選擇了root免密登陸,有興(wu)趣(liao)的同學(xué)可以嘗試下,這一步主要是為了能進(jìn)入服務(wù)器),具體方法為:
進(jìn)入配置文件,我的配置文件在
/etc/mysql/mysql.conf.d
使用sudo打開(kāi),因?yàn)楸仨氁猻u權(quán)限才能更改etc的配置,當(dāng)然因?yàn)槲覜](méi)有在家目錄下自定義配置,所以都是默認(rèn)的,這個(gè)配置很有可能每個(gè)人位置不一樣,而且你們也是很可能自己配置了,那么可以用在終端上用mysql --help查看此時(shí)哪個(gè)配置在發(fā)揮作用,當(dāng)然也不是一下子能找到的,比如我目前配置文件在第二個(gè)/etc/mysql/my.cnf中,但是打開(kāi)來(lái)沒(méi)有配置的選項(xiàng),里面是兩個(gè)路徑,這個(gè)路徑才是真正的配置文件,就好比是一個(gè)“嵌套”

sudo vim mysqld.cnf
打開(kāi)之后在第15行左右的位置[mysqld]的下面插入一行

之后保存退出vim即可
2.清空authentication_string密碼
其實(shí)這一步是我誤打誤撞進(jìn)去的,也是被網(wǎng)上各種復(fù)制的教程帶跑偏了,今天晚上在研究user表時(shí),看到plugin字段默認(rèn)是caching_sha2_password,所以我想到有可能之前不應(yīng)該用md5加密,而應(yīng)該用sha2,所以:
注意:這是關(guān)鍵步驟
update user set authentication_string=sha2("1234",32) where user = 'root';
flush privileges;
然后再看user表中root的數(shù)據(jù),發(fā)現(xiàn)authentication_string的值居然變?yōu)閚ull了,此時(shí)我有預(yù)感我可能可以真正的免密登陸了
回到配置文件(注意使用sudo),把上面的在配置中加的那一行代碼
skip-grant-tables
給刪了,然后重啟MySQL服務(wù)器,然后登陸
mysql -u root
果然真的能登陸了,真正的免密登陸,因?yàn)榇藭r(shí)root賬戶的密碼已經(jīng)被清掉了,但是為啥用sha2摘要算法不是算出一個(gè)密碼而是清掉一個(gè)密碼我就不懂了,肯定有大佬知道…
3.重新設(shè)置密碼
重新設(shè)置密碼就簡(jiǎn)單了,一行代碼搞定:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';
ps:MySQL在第一次安裝之后,也是沒(méi)有密碼的,第一次登陸服務(wù)器時(shí)可能需要sudo mysql -uroot登陸,登陸之后自己再設(shè)置mysql的root密碼,設(shè)置方法和上述代碼一模一樣
4.結(jié)束
之后就可以用新密碼重新登陸MySQL啦
mysql -u root -p123
5.最后
- 本次也是誤打誤撞然后清空了root密碼,具體的原理并不清晰,比如為啥使用sha2卻把root密碼authentication_string字段變?yōu)镹ULL了,如果你的plugin是md5,有可能就是用MD5才是正確的,如果是sha1,就用sha1嘗試,沒(méi)有看官方文檔,所以整個(gè)過(guò)程很痛苦,因此,嚴(yán)格上來(lái)說(shuō),這是一個(gè)提問(wèn)帖,坐等大佬,感謝
- 很多地方可能沒(méi)有講詳細(xì),比如數(shù)據(jù)庫(kù)重啟,配置文件,如何找debian-sys-maint賬戶,vim編輯等,有問(wèn)題歡迎提問(wèn),常在csdn,隨時(shí)在的。
- 系統(tǒng)為Ubuntu,Mac方法應(yīng)該一樣,主要Mac的MySQL配置文件已經(jīng)被優(yōu)化了,一定是需要自己做一個(gè)my.cnf的,一般同學(xué)應(yīng)該都放在家目錄下,所以文件位置肯定和我不一樣
- 可能同學(xué)還是舊版本,比如5.x的,網(wǎng)上的方法可能也還是適用的,那么這個(gè)方法就肯定不適用了(因?yàn)閡ser表中密碼字段都不一樣了),所以版本注意一下
到此這篇關(guān)于MySQL8.0.23版本的root密碼重置最優(yōu)解法 的文章就介紹到這了,更多相關(guān)MySQL8.0.23 root密碼重置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Mysql定時(shí)+存儲(chǔ)過(guò)程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù)的過(guò)程
這篇文章主要介紹了利用Mysql定時(shí)+存儲(chǔ)過(guò)程創(chuàng)建臨時(shí)表統(tǒng)計(jì)數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
MySQL SELECT?...for?update的具體使用
本文主要介紹了MySQL的SELECT?...for?update的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
mysql error:#1062 Duplicate entry ‘***′ for key 1問(wèn)題解決方法
今天公司的一個(gè)網(wǎng)站突然提示MySQL Error Duplicate entry '96624' for key 1錯(cuò)誤,經(jīng)過(guò)分析這個(gè)問(wèn)題是由于mysql表中的一個(gè)id自增長(zhǎng)字段導(dǎo)致。2011-09-09
mysql命令行中執(zhí)行sql的幾種方式總結(jié)
下面小編就為大家?guī)?lái)一篇mysql命令行中執(zhí)行sql的幾種方式總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
使用python連接mysql數(shù)據(jù)庫(kù)之pymysql模塊的使用
這篇文章主要介紹了使用python連接mysql數(shù)據(jù)庫(kù)之pymysql模塊的使用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
設(shè)計(jì)性能更優(yōu)MySQL數(shù)據(jù)庫(kù)schema
這篇文章主要介紹了設(shè)計(jì)性能更優(yōu)MySQL數(shù)據(jù)庫(kù)schema,文章通過(guò)數(shù)據(jù)類(lèi)型優(yōu)化展開(kāi)對(duì)主題內(nèi)容的詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
windows 64位下mysql 8.0.13 安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了windows 64位下mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11

