问题描述:
在设置外部客户端连接mysql数据后,出现下面的问题:
1,执行mysql -u root –p,输入密码后一直提示ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: YES),
、
2,用mysql可以进入数据库,执行shoe databases;后数据库显示不全
正常的应该默认有4个
问题原因:
原来是MySQL数据库的user表里,存在用户名为空的账户即匿名账户,导致登录的时候是虽然用的是root,但实际是匿名登录的,通过错误提示里的''@'localhost'可以看出来。
解决办法:
因此只需要把user表中的匿名用户删除即可解决这两个问题。
1、# vi /etc/my.cnf
在[mysqld]块最后面加上skip-grant-tables,这样重启服务后登陆MySQL无需密码,保存退出vim
2、# service mysqld restart
重启服务
3、# mysql -u root -p
回车直接进入mysql
4、mysql> use mysql ;
5、mysql>delete from user where user='';
删除空用户前
删除空用户后
6、mysql>flush privileges;
刷新权限表
7、把第一步中my.cnf文件中加上的那一行去掉,再次重启服务即可。
8,正常登录:
9,客户端也可正常登录