1. 程式人生 > >MySQL忘記密碼後的報錯解決

MySQL忘記密碼後的報錯解決

第一次登陸上MySQL後沒有儲存也忘記修改密碼,導致後來忘記密碼一直登入不上。查閱了網上很多教程,嘗試了很多種不同的方法。結合網上普遍的教程和我自己實際的解決措施整理如下。

mysql Can’t connect to MySQL server on localhost (10061)錯誤

C:\MySQL> mysql -u root -p 
Enter password:*******  
ERROR 2003 (HY000): Can't connect to MySQL server on localhost (10061)

原來是還沒有連線上MySQL服務,所以在輸入 mysql -u root -p前要輸入下面的指令確保服務已經啟動

C:\MySQL> net start mysql

這時候就會顯示MySQL服務已經啟動成功

mysql Access denied for user [email protected]錯誤

C:\MySQL> mysql -u root -p 
Enter password:*******  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解決方法:

  1. 編輯mysql安裝目錄下的配置檔案my.ini,在【mysqld】這個條目下加入程式碼skip-grant-tables儲存退出並重啟mysql。這時候出現password就可以直接按回車不用輸密碼就可以進入MySQL了。

我嘗試這種方法還是會彈出錯誤,我是把skip-grant-tables放在ini檔案末尾的。又看到有教程說不要把skip-grant-tables放到末尾,所以我就試著放在【mysqld】條目下中間和開頭位置,發現一直還是報錯

  1. 在mysql安裝目錄下查詢.err檔案,用文字模式開啟,在裡面找到【Note】這一行,A temporary password is generated for [email protected]:後面跟著的一串東西就是密碼。

我一開始嘗試用這種方法開啟err檔案並沒有發現標有【Note】的一行。後來我把安裝目錄下的data資料夾刪掉,輸入下面這條指令重新生成一個data新資料夾。這時候重新開啟err檔案就發現有【Note】的一行,後面的就是密碼了。

C:\MySQL> mysqld --initialize

mysql You must reset your password using ALTER USER statement before executing this statement.錯誤

C:\MySQL> SET PASSWORD = PASSWORD('your new password');
C:\MySQL> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
C:\MySQL> flush privileges;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解決方法:

C:\MySQL> ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password';
C:\MySQL>PASSWORD EXPIRE NEVER;
C:\MySQL> flush privileges;

這時候就顯示修改密碼成功,以後就能用自己設定的密碼登入MySQL啦!