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
按 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日