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
ERROR 1045 (28000): Access denied for user ‘roort‘