ERROR 1045 (28000): Access denied for user 'roort'

问题现象:

错误提示:

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

ERROR 1045 (28000): Access denied for user 'roort'@'localhost' (using password: YES)

故障原因:

mysql数据库的user表里面有用户名为空的账户,即匿名用户。导致登录的时候虽然用的是root,但实际是匿名登录的,通过错误提示''@'localhost',可以看出来。

解决方法:

1、停止mysqld服务

   [root@Paul ~]# service mysqld stop

2、在配置文件/etc/my.cnf添加skip-grant-tables一行,跳过密码验证

   [root@Paul ~]# vim /etc/my.cnf

[mysqld]

datadir=/data/mysql

user=mysql

log-bin=mysql-bin

basedir=/usr/local/mysql

skip-grant-tables            // 添加skip-grant-tables

3、启动mysqld服务,在新开终端输入

 [root@Paul ~]# mysql

 mysql> use mysql;

 mysql> select user from user;

+------+

| user |

+------+

| root |

| root |

| root |

|    |

|    |

| root |

6 rows in set (0.00 sec)

可以看到里面有2个用户名为空的匿名账户

mysql> delete from user where user='';

Query OK, 2 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4、在配置文件/etc/my.cnf删掉skip-grant-tables



猜你喜欢

转载自blog.51cto.com/437549/2112758