ERROR 1045 (28000): Access denied

ERROR 1045 (28000): Access denied for user 'user'@'host' (using password: YES)html


鏈接mysql報錯:
mysql

C:\Users\Lenovo>mysql -h 115.29.221.104 -u root -p
Enter password: **********
ERROR 1045 (28000): Access denied for user 'root'@'218.205.187.58' (using password: YES)

還有相似的這樣的錯誤,sql

C:\Users\Lenovo>mysql -h 115.29.221.104 -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'218.205.187.58' (using password: NO)

下面這個是沒有使用密碼,若是沒有密碼的話,固然不容許鏈接。上面那個狀況就是輸入了密碼,可是密碼出錯了。數據庫

可是我明明就是這個密碼爲何出錯呢?(實際上是你的密碼真的錯了)。服務器

首先你確保你密碼沒錯,遠程鏈接數據庫老是出現ERROR 1045 (28000): Access denied,爲何,下面來進一步分析。spa


每每會是這種狀況,你在遠程服務器上直接鏈接不會出錯,而在本地鏈接遠程服務器就會出錯。就是這個錯誤,code

C:\Users\Lenovo>mysql -h 115.29.221.104 -u root -p
Enter password: **********
ERROR 1045 (28000): Access denied for  user 'root'@'218.205.187.58' (using password: YES)

而在115.29.221.104上就用相同的用戶名和密碼就能夠鏈接。爲何?server

首先來看mysql庫user表以下,htm

mysql> select user,host from user;
+------------------+----------------+
| user             | host           |
+------------------+----------------+
| root             | %              |
| root             | 127.0.0.1      |
| root             | 218.205.187.58 |
| root             | ::1            |
| root             | backup         |
| debian-sys-maint | localhost      |
| root             | localhost      |
+------------------+----------------+
7 rows in set (0.00 sec)

沒什麼異常的,在看以下查詢,get

mysql> select user,host,password
    -> from user;
+------------------+----------------+-------------------------------------------+
| user             | host           | password                                  |
+------------------+----------------+-------------------------------------------+
| root             | localhost      | *31B38457C12D1E7B0533C3456109E38BAC97CFD5 |
| root             | backup         | *31B38457C12D1E7B0533C3456109E38BAC97CFD5 |
| root             | 127.0.0.1      | *31B38457C12D1E7B0533C3456109E38BAC97CFD5 |
| root             | ::1            | *31B38457C12D1E7B0533C3456109E38BAC97CFD5 |
| debian-sys-maint | localhost      | *6124B487491BC901CF8A8978AFD5A61516D57B5A |
| root             | 218.205.187.58 | *09D87193377D387DCADE6841D46095002B222934 |
| root             | %              | *31B38457C12D1E7B0533C3456109E38BAC97CFD5 |
+------------------+----------------+-------------------------------------------+
7 rows in set (0.00 sec)

有了以上兩個查詢的數據,咱們來討論一下,

首先我在本地機器登錄,以下,

C:\Users\Lenovo>mysql -h 115.29.221.104 -u root -p
Enter password: **********

我機器IP爲218.205.187.58,能匹配到的是這兩條,

| root             | 218.205.187.58 | *09D87193377D387DCADE6841D46095002B222934 |
| root             | %              | *31B38457C12D1E7B0533C3456109E38BAC97CFD5

那麼mysql server會選擇哪一條呢?

固然是這個,

| root             | 218.205.187.58 | *09D87193377D387DCADE6841D46095002B222934 |

這個規則能夠看mysql手冊。

http://stackoverflow.com/questions/10299148/mysql-error-1045-28000-access-denied-for-user-billlocalhost-using-passw

http://dev.mysql.com/doc/refman/5.6/en/connection-access.html

若是匹配到這條登錄信息,那麼哈希以後的passwd是*09D87193377D387DCADE6841D46095002B222934,通過驗證確實不是我

使用的登錄密碼。問題就在這裏。那麼是怎麼致使我密碼變動了呢?

翻看了一下以前的命令記錄,是這條sql語句出錯了,以下,

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'218.205.187.58' IDENTIFIED BY '034039' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

mysql> select user,host from user;
+------------------+----------------+
| user             | host           |
+------------------+----------------+
| root             | *              |
| root             | 127.0.0.1      |
| root             | 218.205.187.58 |
| root             | ::1            |
| root             | backup         |
| debian-sys-maint | localhost      |
| root             | localhost      |
+------------------+----------------+
7 rows in set (0.00 sec)

這個IDENTIFIED BY '034039'不是我想要的密碼。而我一直使用原來的密碼登錄。

====================END====================

相關文章
相關標籤/搜索