1. 程式人生 > >MySQL忘記密碼了怎麼辦?

MySQL忘記密碼了怎麼辦?

接手一個專案時,如果上一位負責人沒有把專案文件、賬號密碼整理好是一件很頭疼的事情。。 例如,當你想開啟MySQL資料庫的時候 輸入:

mysql -u root -p 一回車想輸入密碼,發現密碼錯誤!!

# [MySQL for Linux錯誤 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)](https://www.cnblogs.com/gumuzi/p/5711495.html)

立馬有種想要砸鍵盤的衝動~不過別慌,程式設計師最厲害的地方就是,上網找解決方案哈哈;

下面就和大家分享一下 《MySQL忘記密碼的解決方案》

1、找到 my.cnf 配置檔案的位置

windows下修改的是my.ini,這裡主要說的是Linux的具體操作,

Linux系統使用 whereis 能夠很方便地找到檔案的位置:

$ whereis my
$ my:/etc/my.cnf
複製程式碼
2、修改 my.cnf

如果你是 root 使用者,直接vim /etc/my.cnf (注:windows下修改的是my.ini)

如果你是普通使用者 , sudo vim /etc/my.cnf

進入vim編輯器編輯之後,找到 [mysqld] ,按鍵盤的 i 鍵進入編輯模式,在[mysqld]後面任意一行新增 skip-grant-tables

用來跳過密碼驗證的過程:

mysqld 位置

按 ESC 退出編輯,鍵入**:wq** ,回車即儲存並退出。

3、 重啟 mysqld 服務
$ sudo /etc/init.d/mysqld restart 
複製程式碼

普通使用者在這個命令最前面加上 sudo ,root 使用者就不用啦。

4、無密進入MySQL
$ mysql -u root -p
複製程式碼

出現Entering password 無需理會,回車即可進入 MySQL 資料庫。

5、修改root密碼

進入到 MySQL 資料庫之後,我們就可以更新 "mysql"資料庫中“user”表的 root 記錄的密碼了

mysql > use mysql;
mysql > update user set password=password('YOUR_NEW_PASSWORD') where user='root'; 
mysql > flush privileges;
複製程式碼

步驟解析:

use mysql; 進入到名為 “mysql” 的資料庫,

​ 然後使用 update 語句更新密碼,

​ 更新密碼之後使用 flush privileges; 重新整理許可權。

注意: password()函式是用於密碼儲存的加密函式,該函式的加密過程不可逆!因此除非用大量的資料進行比對,不然沒辦法使用什麼逆函式檢視舊的密碼,只能使用該函式更新密碼,YOUR_NEW_PASSWORD 就是自己設定的新密碼。

設定好新密碼之後,Ctrl + D退出 MySQL 資料庫。

6、重新配置 my.cnf 檔案

重新用 vim 開啟 my.cnf ,將剛才的 skip-grant-tables 刪除或者在前面加上#號註釋,儲存並退出。

7、重啟 mysqld 服務
$ sudo /etc/init.d/mysqld restart 
複製程式碼
8、用新密碼進入MySQL
$ mysql -u root -p
複製程式碼

出現Entering password 時,輸入你的新密碼,回車進入,出現 mysql 歡迎介面,恭喜你,修改密碼完成!

親身測試的有效解決方案,有什麼問題歡迎你留言交流。

—— 57EN寫於2018年12月10日