問題:(MySQL 5.6社群版windows版)
忘記密碼或其他一些原因導緻無法連接配接上MySQL伺服器端,在指令行報錯:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解決方案:
步驟一:關閉資料庫服務端mysqld程式
兩種方式:
①快捷鍵 windows + R ;輸入 services.msc ; 找到MySQL 停止其服務(前提是你之前已經把MySQL加入了系統服務中)

②在指令行程式中;注意需要以管理者權限運作cmd程式,不然無法關閉mysqld程序
>>tasklist |findstr mysqld 這行指令可以用來檢視mysqld是否在運作,在運作中則可以查到它的PID
>>taskkill /F /PID xxxx xxxx是從前面一條指令得到的PID值
步驟二:跳過權限登入MySQL 伺服器端
在cmd中執行 mysqld --skip-grant-tables
>>mysqld --skip-grant-tables
此時cmd程式會阻塞,關閉cmd程式 然後重新以管理者權限運作cmd
然後在cmd指令行中輸入 mysql 就能連接配接上MySQL 伺服器端了
>>mysql
然後可以通過sql語句 :SELECT * from mysql.user\G; 來檢視伺服器端所有的使用者資訊,重點檢視User、Password、authentication_string這三項。這條語句非常關鍵。
步驟三:修改密碼
依次執行如下sql語句:
update mysql.user set authentication_string=password('321') where user = 'root';
flush privileges;
上面第一條sql語句中 password('密碼') 函數中寫你想要改成的密碼,我這用的是密碼321
接着執行:
SELECT * from mysql.user\G;
去找到root使用者的authentication_string這項,并把它的值記下來。
MySQL會給密碼進行加密,你想要設定的密碼進行加密後的值就等于此時authentication_string這項的值
是以接下來把Password這項的值也設定成此時authentication_string項的值就ok了;我設定的密碼是321 ,其對應的密文是 *7297C3E22DEB91303FC493303A8158AD4231F486
執行下面兩條sql語句:
update mysql.user set password = '*7297C3E22DEB91303FC493303A8158AD4231F486' where user = 'root';
flush privileges;
步驟四:
輸入 quit 退出 mysql ;然後就可以直接登入了
>>mysql -u root -p
--------------------------------------------------------------------------------
當然也可以重新開機下mysqld再登入
再次提醒:需要以管理者權限運作cmd
>>tasklist |findstr mysqld
>>taskkill /F /PID xxxx
然後就是啟動mysqld程式
(不知怎麼把mysqld加入系統服務中去可看點選打開連結)
>>mysqld
若已經把mysqld程式加入了系統服務中,則需要在系統服務中啟動MySQL服務端
快捷鍵 windows + R ;輸入 services.msc ;
最後就是重新登入
>>mysql -u root -p
在Password:處填入你前面設定的密碼