MySql Access denied for user ''@'localhost' to database 'mysql'

问题:ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql

一、预备知识
1、mysql的host和user:
在我们登录的时候,是需要mysql的host和user的。他们是一对的,缺一不可,例如[email protected]和root@localhost 是两个完全不同的账户。
例如,我们输 mysql -u root -p的时候,root就是user名,而当我们没有指定时,默认host就是localhost,因此我们可以看到上述错误中 ''@'localhost' 这里指的就是localhost
而我们输入mysql -u root -h 127.0.0.1 -p的时候,host名就成了127.0.0.1
2、用户权限
如果我们不是在登录的时候报这个错误的,而是在进行数据库操作时,那么问题应该就出在了用户权限这一点上。此时我们需要的是给这一对user@host进行权限授予。

二、问题所在
使用跳过权限登陆后,查看mysql数据库的user表,
此时我们可以发现,localhost没有对应的user,并且也没有密码,而且后面跟着的权限都是N。所以我们无法使用localhost来进行登录和操作。

三、解决方法
1、跳过登录权限
打开my.cnf,在[mysqld]下面另起一行,然后添加
skip-external-locking
skip-name-resolve
skip-grant-tables

2、修改localhost的user、密码以及权限
mysql> mysql -u root -p
mysql> use mysql;
mysql> flush privileges ;
mysql>update user set User='root' where host='localhost';
mysql> update   user   set   password = password ( '123456' where  User = 'root' ;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456'; mysql>flush privileges ;
mysql>quit

3、重启mysql服务
最最重要的两步!!!
打开my.cnf,将之前添加的三条语句加入#注释掉
然后service mysql restart

猜你喜欢

转载自blog.csdn.net/bintoyu/article/details/79752717
今日推荐