今天上班不知道怎么数据库突然连接不上了,使用数据库连接工具一直提示密码不对,然后就陷入了误区。。。
1.数据库提示密码不正确后,开始一直在找密码为什么不对,是不是密码错了,便登录服务器数据库,结果发现不输入密码就可以登录,然后想着赶紧把密码改了,但是执行use mysql的时候报错ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql。
2.报错之后show datebases;发现只有一个数据库,然后又回去看了一下报错信息,才知道登录的账户根本就不是输入的用户。
3.造成这个原因的是因为数据库存在 ' ' 的匿名用户,导致登录的并不是自己的想登录的账户。
4.网上找了很多方法,大部分是关闭数据库然后屏蔽权限再新开一个客户端免密登录,再删除掉空的账户或者修改空账户为root账户登录。
5.只不过操作起来总会遇到问题,像是mysqld_safe --skip-grant-table屏蔽权限这步总会提示各种各样的错误提示,后来几经试探才发现了一种比较容易成功的方法。
6.修改my.cnf文件,在mysqld里面加上skip-grant-table,再重启。就不会出错,然后再免密登录删除匿名账户或者修改匿名账户。
7.操作成功后要记得把my.cnf里面的加的去掉skip-grant-table。