1. 程式人生 >實用技巧 >其它 >MySQL密碼又忘了?別怕,試試這個方法!

MySQL密碼又忘了?別怕,試試這個方法!


一、問題背景

很久之前,在centos伺服器上安裝了Mysql5.7的資料庫,但是很長時間沒有使用過,裡面有很多寶貴的資料,但是不幸的是密碼忘記了~~。

此時,就想是否有一種辦法,能找回密碼或者修改密碼的方案。

於是,就在網上找了一些方案,大體用的最多的就是skip-grant-tables解法。

廢話不多說,直接開擼!

二、解法詳解

本例的作業系統是centos7,mysql是5.7的版本,可能不同版本的命令稍有不同,網友可以自行根據系統版本查詢相關命令。

2.1、skip-grant-tables模式啟動

skip-grant-tables表示,在啟動mysql時不啟動授權表功能,可以直接免密碼登入

#修改/etc/my.cnf檔案
vim/etc/my.cnf

#在[mysqld]區域新增配置,並儲存my.cnf檔案
skip-grant-tables

#重啟mysql
systemctlrestartmysqld

#登入mysql
mysql-uroot-p

#如果出現輸入密碼,直接回車,就可以進入資料庫了

2.2、修改root密碼

#登入mysql,此時還沒有進入資料庫,使用如下命令
usemysql;

#修改root密碼(mysql5.7版本)
updateusersetauthentication_string=password('密碼'),password_expired='N',password_last_changed=now()whereuser='root';

#如果你的mysql是5.6版本修改root密碼(mysql5.6版本)
updateusersetpassword=password('密碼')whereuser='root';

#使其生效
flushprivileges;

#退出
exit;

2.3、新增管理員使用者

如果你不想修改root密碼,可以新增一個管理員使用者,操作如下:

#登入mysql,此時還沒有進入資料庫,使用如下命令
usemysql;

#重新整理資料庫
flushprivileges;

#建立一個使用者,並賦予管理員許可權
grantallprivilegeson*.*to'使用者'@'%'identifiedby'密碼';

#例如,建立一個admin使用者,密碼為admin
grantallprivilegeson*.*to'admin'@'%'identifiedby'admin';

2.4、重啟伺服器

上面操作完成之後,其實還沒有完,需要關閉授權表功能,重啟伺服器

#修改/etc/my.cnf檔案
vim/etc/my.cnf

#在[mysqld]區域刪除改配置,並儲存my.cnf檔案
#skip-grant-tables

#重啟mysql
systemctlrestartmysqld

#此時,修改完畢

三、測試連線

使用我們剛剛新建的admin使用者進行測試登入

#admin登入
mysql-uadmin-p

#輸入密碼admin,此時可以登入

MySQL密碼又忘了?別怕,試試這個方法!

四、總結

如果您也出現忘記密碼的情況,可以使用此方法解決當前問題。

mysql5.7.6版本後,廢棄user表中password()方法,所以舊方法重置密碼對mysql8.0版本是行不通的!

mysql8可以採用此方法修改root密碼:

#在skip-grant-tables模式下,將root密碼置空
updateusersetauthentication_string=''whereuser='root';

#退出,將/etc/my.cnf檔案下的skip-grant-tables去掉,重啟伺服器
#登入mysql
mysql-uroot-p

#因為密碼置空,直接回車,進入資料庫之後,修改密碼
ALTERUSER'root'@'localhost'IDENTIFIEDBY'[email protected]';

#因為mysql8,使用強校驗,所以,如果密碼過於簡單,會報錯,密碼儘量搞複雜些!

作者:Java極客技術 | 轉自:51CTO 點這裡:2020Python高薪實戰學習大合集**

[拿走不謝!Python 3.9 官方中文文件,限時領!] (http://dwz.date/dE6v)

[限時!速領!14張高清Python速查表,效率提升必備!] (http://dwz.date/dE6w)

[GitHub標星3W+,80個Python案例,帶你輕鬆玩轉Python學習!] (http://dwz.date/dE64)