錯誤信息1 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:YES) 錯誤信息2 :ERROR 1045 (28000): Access denied for user 'usera'@'localhost' (using password:NO)
總結
總結:對於 ERROR 1045 (28000): Access denied for user 'root'@'127.0.0.1' 此類錯誤返回時, (using password: ?)中?的 關鍵字是YES還是NO,關鍵不在於用戶是否存在,密碼是否正確,它的結果取決於登錄時,用戶對於密碼有沒有字符串的輸入,
如果沒有,MySQL數據庫驗證后,若出錯返回此類信息,則應是 (using password: NO),若用戶對密碼有字符串的輸入,返回的則是 (using password: YES)。
原因1 : 客戶端遠程訪問的用戶賬號並未創建
檢查
以管理員ROOT登錄后,show grants for 'user'@’IP‘; 或者 select user from mysql.user; 確認用戶賬號是否存在。 mysql> show grants for 'test'@'127.0.0.1'; ERROR 1141 (42000): There is no such grant defined for user 'test' on host '127.0.0.1' mysql> 返回信息:ERROR 1141 (42000): There is no such grant defined for user 'test' on host '127.0.0.1' 說明,沒有jtsec用戶,或者沒有對jtsec用戶進行在192.168.8.123遠程訪問的授權。
解決
mysql> grant all privileges on *.* to 'test'@'127.0.0.1' identified by 'test' with grant option; mysql> flush privileges; mysql> show grants for 'test'@'127.0.0.1'; mysql> select user,host from mysql.user;
原因2 : 用戶賬號存在,但未對其所在的客戶端的IP進行遠程訪問授權允許
檢查
以管理員ROOT登錄后 show grants for 'user'@'IP'; mysql> show grants for 'root'@'127.0.0.1'; ERROR 1141 (42000): There is no such grant defined for user 'root' on host '127.0.0.1' 返回信息:ERROR 1141 (42000): There is no such grant defined for user 'root' on host '127.0.0.1' 說明,沒有root用戶,或者沒有對root用戶進行在127.0.0.1遠程訪問的授權。 mysql> show grants for 'root'@'localhost'; 或者直接查詢mysql的user用戶表select user,host from mysql.user; mysql> select user,host from mysql.user;
解決
進行root用戶的遠程訪問授權,可以授權到指定的客戶端IP,也可以授權為所有IP都可訪問(host值為%)。 授權為所有IP都使用用戶root,密碼root,來遠程訪問數據庫 mysql> GRANT ALL PRIVILEGES ON *.* TO'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; mysql> flush privileges; 再次進行授權的查詢 mysql> show grants for 'root'@'%'; 再次查詢授權表記錄 mysql> select user,host,password from mysql.user;
注意: mysql5.7用下面這條語句查詢 mysql> select user,host,authentication_string from mysql.user;
原因3 : 用戶賬號授權訪問的密碼不正確
檢查
以管理員ROOT登錄后, select user,host, authentication_string from mysql.user; mysql> select user,host, authentication_string from mysql.user;
解決
使用正確的訪問密碼進行訪問即可。