MySQL用户名和密码都正确却无法登陆的问题

使用该语句创建用户

mysql>CREATE USER 'hive'@'%' IDENTIFIED BY 'hive'; 

用命令行登陆一直报错,但是navicat客户端却可以正常登陆

mysql -u hive -p 
Enter password: ******* 
ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES) 

查看用户表发现有存在用户名为空的账户,上网查了资料用户名为空的账户只要在本地,可以不用输入账号密码即可登录到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;

完成,命令行可以正常登陆
 

你可能感兴趣的:(常见问题)