C:\AppServ\MySQL> mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決方法:
編輯mysql配置文件my.ini(在mysql的安裝目錄下,我的在D:\phpStudy\MySQL\my.ini),在[mysqld]這個條目下加入 skip-grant-tables 保存退出后重啟mysql
1.點擊“開始”->“運行”(快捷鍵Win+R)。
2.停止:輸入 net stop mysql
3.啟動:輸入 net start mysql
這個時候會出現mysql服務無法啟動的情況 我的解決方法是:
cmd中輸入命令 “tasklist | findstr "mysql" ” ,用於查找mysql的殘留進程。果不其然,確實存在mysql的殘留進程,難怪一直提示MySQL服務處於正在啟動或者停止的狀態中,此時要做的就是殺死MySQL進程。之后輸入命令 “taskkill /f /t /im mysqld.exe” ,就可以將mysql殘留進程全部殺死了,再次輸入命令“tasklist| findstr "mysql"”,查看是否還留有有其他的mysql殘留進程,如果還有,則繼續殺死,直到完全殺死進程為止,如下圖所示。
當mysql殘留進程全部結束之后,我們就可以正常啟動MySQL服務了,如下圖所示。需要注意的是此時還是要以管理員的身份進入命令行窗口。
繼續重復mysql的停止 ,啟動 的操作
這時候在cmd里面輸入mysql -u root -p就可以不用密碼登錄了,出現 password:的時候直接回車可以進入,不會出現ERROR 1045 (28000),但很多操作都會受限制,因為我們不能grant(沒有權限)。(以下操作的目錄都是在phpStudy\Mysql\bin下完成的)
繼續按下面的流程走:
1.進入mysql數據庫:
mysql> use mysql;
Database changed
2.給root用戶設置新密碼:
mysql> update user set password=password("新密碼") where user="root";
Query OK, 1 rows affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
3.刷新數據庫
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4.退出mysql:
mysql> quit;
Bye
第3步:刷新數據庫時失敗了 但是仍然沒有妨礙最后的成功
改好之后,再修改一下my.ini這個文件,把我們剛才加入的 "skip-grant-tables"這行刪除,保存退出再重啟mysql就可以了。
最后這一步沒有執行 因為已經可以了
本文參考https://www.cnblogs.com/m97i/p/7586628.html 真的好用謝謝