問題重現:(以下討論范圍僅限Windows環境):
C:\AppServ\MySQL> mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
(注:如果提示“mysql不是內部命令”,需要將mysql加入環境變量,方法詳見:https://jingyan.baidu.com/article/e4d08ffdd5f6670fd2f60d2f.html)
解決辦法:
1、編輯mysql配置文件my.ini(5.6在C:\ProgramData\MySQL\MySQL Server 5.6路徑下)
在[mysqld]這個條目下加入 skip-grant-tables 保存后退出
(注:ProgramData為隱藏文件夾,需要設置顯示文件夾,win10系統操作如下)
2、重啟mysql
重啟:
(1)點擊“開始”->“運行”(快捷鍵Win+R)->輸入“cmd”
(2)啟動:輸入 net stop mysql
(3)停止:輸入 net start mysql
(注:net stop mysql提示“服務名無效”,服務名不正確)
解決辦法:
1、win+R打開運行窗口,輸入services.msc
2.在其中查看mysql的服務名,我的是MySQL56
(注:net stop mysql提示“發生系統錯誤 5,拒絕訪問”,操作權限太低)
解決辦法:
以管理員身份來運行cmd
3、此時在cmd里面輸入mysql -u root -p就可以不用密碼登錄了,出現Enter PassWord: 直接回車進入,不會出現ERROR 1045 (28000),但很多操作都會受限制,因為我們不能grant(沒有權限)
4、進入mysql數據庫
mysql> use mysql
5、給root用戶設置新密碼入
mysql> update user set password=password("新密碼") where user="root";
(注:記得輸入分號“;”)
6、刷新數據庫
mysql> flush privileges;
(注:記得輸入分號“;”)
7、退出mysql
mysql> quit
8、改好之后,再修改一下my.ini這個文件,把我們剛才加入的"skip-grant-tables"這行刪除,保存退出再重啟mysql就可以了