一开始怀疑是数据库中只有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;
问题解决了。