解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server

解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server

在“配置登陆信息和数据库(mysql)”连接中,出现“服务器连接错误Host 'XXX' is not allowed to connect to this MySQL server”的错误。

像这种错误,就是典型的远程权限问题。

问题症结是MySQL 没有开放远程登录的权限。这时要看你的服务器到底用的那种系统,Linux或者是Windows,这个解决办法不同。解决的办法就是开启 MySQL 的远程登陆帐号。

解决方案:

第一步:确定服务器上的防火墙没有阻止 3306 端口。

MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 3306 端口连接到 MySQL 的。

如果您在安装 MySQL 时指定了其他端口,请在防火墙中开启您指定的 MySQL 使用的端口号。

如果不知道怎样设置您的服务器上的防火墙,请向您的服务器管理员咨询。

第二步:增加允许远程连接 MySQL 用户并授权。

(1).登陆mysql

(2).创建远程登陆用户并授权,在要链接的服务器上操作

mysql> grant all PRIVILEGES on db_name.* to 'username'@'xxx.xxx.xx.x' identified by 'password' WITH GRANT OPTION;

上面的语句表示将数据库 db_name 的所有权限授权给 username 这个用户,允许 username 用户在 xxx.xxx.xx.x 这个 IP 进行远程登陆,并设置 username 用户的密码为 password。

参数分析:

    all PRIVILEGES 表示赋予所有的权限给指定用户,这里也可以替换为赋予某一具体的权限,例如:select,insert,update,delete,create,drop 等,具体权限间用“,”半角逗号分隔。

    db_name.* 表示上面的权限是针对于哪个表的,db_name指的是数据库名称,后面的 * 表示对于所有的表,由此可以推理出:对于全部数据库的全部表授权为“*.*”,对于某一数据库的全部表授权为“数据库名.*”,对于某一数据库的某一表授权为“数据库名.表名”。

    username表示你要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的用户。

    xxx.xxx.xx.x 表示允许远程连接的 IP 地址,你的IP,如果想不限制链接的 IP 则设置为“%”即可。

    password 为用户username的密码。

    最后执行了上面的语句后,一般都会立即生效,返回值如下:

    Query OK, 0 rows affected (0.01 sec)


   如果没有上面的语句那么请执行下面的命令,即可立即生效。

   Mysql> flush privileges

 上面(2)当中的授权语句,在Mysql的图形界面sql,可以写成这样:

你想root使用123456从任何主机连接到mysql服务器的话,代码如下:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

如果你想允许用户root从ip为192.168.1.3的主机连接到mysql服务器,并使用123456作为密码,代码如下:

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’192.168.1.3′ IDENTIFIED BY123456WITH GRANT OPTION;

 上面(2)当中的授权还可以采用改表法:

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"

mysql -u root -pvmwaremysql>use mysql;

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

mysql>select host, user from user;

 

posted @ 2017-11-15 14:42  整合侠  阅读(5377)  评论(0编辑  收藏  举报