1. 程式人生 > >MySQL使用者名稱和密碼都正確卻無法登陸的問題

MySQL使用者名稱和密碼都正確卻無法登陸的問題

今天使用MySQL時,我建立了一個新使用者:
CREATE USER 'ubermensch'@'%' IDENTIFIED BY 'man2017';
然後登陸該使用者時卻一直報錯(密碼正確):
C:\Users\超人林>mysql -u ubermensch -p
Enter password: *******
ERROR 1045 (28000): Access denied for user 'ubermensch'@'localhost' (using password: YES)

後來翻閱網上資料發現MySQL中預設存在一個使用者名稱為空的賬戶,只要在本地,可以不用輸入賬號密碼即可登入到MySQL中。mysql在驗證使用者登陸的時候,首先是驗證host列,如果host列在驗證user列,再password列,而現在按照我之前的連線語句:按照host列找到為空的那列(空匹配所有使用者名稱),所以匹配到了這條記錄,然後發現這條記錄的密碼為空,而我的語句裡面有密碼,那麼就會報錯。
解決辦法:刪除匿名使用者。

mysql> use mysql;
Database changed
mysql> delete from user where user='';
Query OK, 1 row affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> exit;

然後就可以登陸使用者了:

mysql -u ubermensch -p
Enter password: *******
Welcome to the MySQL monitor.