mysql数据库提示本地无法连接远程服务器(Host is not allowed to connect to this MySQL server)解决办法

问题描述:
1、远程服务器安装了mysql服务并且启动成功,在本地可以进行自由的访问和更新等操作
2、服务器已开通了远程访问服务器3306端口的权限并且通过netstat -ltnp命令查看3306处于监听过程中
3、远程通过工具链接该mysql数据库会报Host ‘xxx.xxx.xxx.xxx’(本地ip) is not allowed to connect to this MySQL server 的错误

解决办法:
1、远程链接服务器,在服务器内mysql系统目录下的/bin文件下执行./mysql -u root -p;输入密码登入mysql;
2、在mysql中执行use mysql命令,进入系统数据库
3、在mysql数据库中执行下面的命令;如果返回结果如下图:
select host from user where user = 'root'

mysql数据库提示本地无法连接远程服务器(Host is not allowed to connect to this MySQL server)解决办法_第1张图片

该结果表示是由于当前的root用户限制在当前的内网ip内访问的,需要修改他的访问域。

4、在mysql数据库中执行如下命令:
update user set host = '%' where user = 'root';

必须再执行flush privileges,否则更改没有保存住无效。
5、执行完成后通过命令 service mysql restart 来重启mysql数据库,大功告成

ERROR 1130: Host '192.168.xx.xxx' is not allowed to connect to this MySQL ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'

use mysql

mysql> select host, user from user;

将相应用户数据表中的host字段改成'%';

update user set host='%' where user='root';

ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY' 不予理会

flush privileges;

重新远程连接OK

MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】

首先以管理员身份打开命令行窗口,注意是管理员身份,不然无权限访问。之后输入命令“tasklist| findstr "mysql"”,用于查找mysql的残留进程。果不其然,确实存在mysql的残留进程,难怪一直提示MySQL服务处于正在启动或者停止的状态中,此时要做的就是杀死MySQL进程。之后输入命令“taskkill/f /t /im mysqld.exe”,就可以将mysql残留进程全部杀死了,再次输入命令“tasklist| findstr "mysql"”,查看是否还留有有其他的mysql残留进程,如果还有,则继续杀死,直到完全杀死进程为止,如下图所示。

mysql数据库提示本地无法连接远程服务器(Host is not allowed to connect to this MySQL server)解决办法_第2张图片

 当mysql残留进程全部结束之后,我们就可以正常启动MySQL服务了,如下图所示。需要注意的是此时还是要以管理员的身份进入命令行窗口。
 

你可能感兴趣的:(数据库,互联网,c++,c#,开发语言)