天天看點

解決ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

問題:(MySQL 5.6社群版windows版)

忘記密碼或其他一些原因導緻無法連接配接上MySQL伺服器端,在指令行報錯:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解決方案:

    步驟一:關閉資料庫服務端mysqld程式

兩種方式:

①快捷鍵 windows + R     ;輸入 services.msc  ;   找到MySQL  停止其服務(前提是你之前已經把MySQL加入了系統服務中)

解決ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

②在指令行程式中;注意需要以管理者權限運作cmd程式,不然無法關閉mysqld程序

>>tasklist |findstr mysqld        這行指令可以用來檢視mysqld是否在運作,在運作中則可以查到它的PID

>>taskkill /F /PID xxxx             xxxx是從前面一條指令得到的PID值

解決ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

步驟二:跳過權限登入MySQL 伺服器端

在cmd中執行 mysqld --skip-grant-tables 

>>mysqld --skip-grant-tables

解決ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

此時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  ;

解決ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

最後就是重新登入

>>mysql -u root -p

在Password:處填入你前面設定的密碼

繼續閱讀