忘記mysql(mariadb) root密碼解決方法

前言

作為一個(gè)開發(fā),在mysql(mariadb)數(shù)據(jù)庫中,我?guī)缀醪粫?huì)用數(shù)據(jù)庫的root帳號(hào)來折騰項(xiàng)目的數(shù)據(jù)庫,一般是一個(gè)數(shù)據(jù)庫帳號(hào)對(duì)應(yīng)一個(gè)項(xiàng)目或者一個(gè)系列的項(xiàng)目,看實(shí)際需求。root帳號(hào)僅僅作為一個(gè)分配管理的角色存在。既然數(shù)據(jù)庫的root用的少,那么會(huì)忘記密碼的概率就很大。
當(dāng)然我以前也遇過直接給root帳號(hào)用于生產(chǎn)環(huán)境的公司;這種給我感覺是放出root帳號(hào)用來跑項(xiàng)目,只能說心真大,前者存在被刪庫跑路的風(fēng)險(xiǎn),后者存在被rm -rf /的風(fēng)險(xiǎn)。(運(yùn)維管理能力不一定是開發(fā)必備能力,但是如果擁有這個(gè)能力是加分項(xiàng)吧,今天不討論這個(gè)話題)



文章基于:

  1. Linux系統(tǒng)下部署的mariadb。
  2. 要有sudo(root)權(quán)限,為了方便,下面所有執(zhí)行的指令已經(jīng)在sudo su下執(zhí)行。
  3. 服務(wù)的啟動(dòng)/停止使用systemctl。

環(huán)境描述:

  1. OS:Ubuntu 20.04 LTS
  2. mariadb:10.3.31

1. 停止所有mysql服務(wù)

systemctl stop mysql.service

可以ps或者在htop看一下是否已經(jīng)關(guān)閉。

2. 通過mysqld_safe啟動(dòng)數(shù)據(jù)庫

mysqld_safe --defaults-file=my.cnf --skip-grant-tables &

網(wǎng)絡(luò)上面有的說是修改my.cnf文件,但是后面又要改回來,特別麻煩,倒不如直接通過--skip-grant-tables參數(shù)啟動(dòng)。

3. 進(jìn)入數(shù)據(jù)庫

通過

mysql -u root

進(jìn)入數(shù)據(jù)庫,此時(shí)數(shù)據(jù)庫沒有驗(yàn)證流程,可以直接進(jìn)入。

4. 修改root密碼

/*選擇`mysql`配置的數(shù)據(jù)庫*/
use mysql;

/*修改root密碼為:123*/
UPDATE user SET password=PASSWORD('123') WHERE user='root';

/*刷新權(quán)限,可以不執(zhí)行這句*/
FLUSH PRIVILEGES;

第一句use mysql;選擇mysql配置的數(shù)據(jù)庫;
第二句修改root密碼,因?yàn)閙ysql用戶的密碼是密文存儲(chǔ)的,因此使用PASSWORD(...)方法來加密(方法是大寫);其中上面語句修改密碼為123,大家可以自行設(shè)定自己的密碼。
第三句是刷新權(quán)限,可以不執(zhí)行,反正都要重啟數(shù)據(jù)庫(現(xiàn)在用safe模式啟動(dòng)的)。

5. 關(guān)閉安全模式,重啟mysql

通過htop或者pkill關(guān)閉與mysql相關(guān)的進(jìn)程,以停止安全模式。

systemctl start mysql.service


后話

上面的方法屬于硬剛mariadb的配置庫的user表,雖然說這樣做不安全,為了改個(gè)密碼,偶爾這樣巴薩卡一下是ok的。
如果是mysql 8.0以上(非mariadb),據(jù)說是不能這樣硬剛的,沒有實(shí)際測試,可以參考:https://www.cnblogs.com/ivictor/p/9243259.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容