一、問題描述
環境:MySQL 8.0 + Windows
由於密碼錯誤或者其他原因導致無法連上MySQL服務,如下圖:
二、解決方案
解決該問題的具體步驟如下:
1.關閉MySQL服務
以管理員權限運行cmd程序然后輸入net stop mysql,或者運行services.msc 然后找到MySQL服務並停止運行;
2.跳過權限登錄MySQL服務
看了很多人的博客,寫的都是找到my.ini文件然后在[mysqld]后添加skip-grant-tables,經測試無效。
又查到有的說在cmd中運行mysqld –skip-grant-tables,實測在mysql8.0中已失效,現使用mysqld --console --skip-grant-tables --shared-memory,運行結果如下圖:
3.無密登錄
再打開一個cmd窗口,輸入mysql -u root -p,然后回車,再回車(不輸入密碼),直接無密登錄,如下圖:
4.修改密碼
修改密碼所用的主要命令如下所示:
把密碼設置為空:UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';
查看USER表:select host,user,plugin,authentication_string from mysql.user;
以caching_sha2_password加密方式設置密碼修改密碼:ALTER user 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'root';
刷新:flush privileges;
5.重新登錄
把之前打開的cmd窗口關閉,然后以管理員權限運行cmd程序,再執行net start mysql。在MySQL服務開啟成功之后,輸入mysql -u root -p然后在輸入密碼,成功登錄MySQL。