解决1130 Host 'localhost' is not allowed to connect to this MySQL server

 

刚才更改了mysql的root用户密码后就报了【1130 Host 'localhost' is not allowed to connect to this MySQL server】错。

原因:

1.报这个错是没给改后的root用户授权,所以没有权限登录。

2.但我觉得也可能是因为我更改后的密码直接是明文而不像mysql用语句或安装时创建是密文方式的,所以登录的时候无法获取到连接

解决:

【方案一】跳过授权来登录,然后删除root用户,然后再

1.先把本地mysql服务关闭掉,然后通过在mysql安装目录下打开cmd运行以下跳过授权命令

mysql>mysqld --skip-grant-tables

执行过程需要一些时间,直到出现以上信息则表示mysql启动成功。注:不要关掉这个窗口,关闭的话mysql服务则会被关闭掉

2.再执行命令进行登录

mysql>mysql -uroot -p密码

3.删除user表中的root用户,并创建与授权。

mysql>use mysql;

mysql>delete from user where user='root';

mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';

4.在这个过程中可能会出现以下错误

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe

1290错误需要执行将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里的命令

mysql>flush privileges;

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

1396错误的原因是由于之前账号信息清理不干净。需要drop本地root信息

mysql>drop user 'root'@'localhost';

5.授权

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

mysql>flush privileges;

原文地址:https://www.cnblogs.com/zhangheliang/p/10642830.html