一開始懷疑是數據庫中只有127.0.0.1的記錄,沒有localhost的記錄,但是,實際上不是這樣的。
mysql> select host,user,authentication_string from user;
+-----------+------------+-------------------------------------------+
| host | user | authentication_string |
+-----------+------------+-------------------------------------------+
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| 127.0.0.1 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+------------+-------------------------------------------+
3 rows in set (0.00 sec)
很明顯,用戶root存在兩條記錄,host分別是localhost和127.0.0.1,密碼也是一致的,那就排除了密碼輸錯的原因了。經過不斷的探索,最后終于解決了問題。
運行以下語句:
grant all privileges on *.* to root@'localhost' identified by '相應的密碼' with grant option;
最后再執行一下語句
flush privileges;
問題解決了。