错误1130(HY000):主机''不允许连接到这个MySQL服务器

为什么哦为什么我不能连接到MySQL?

mysql -u root -ptest101 -h xxx.xxx.xxx.xxx ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server 

在my.cnf我有以下

 # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 0.0.0.0 

我也跑了下面…

 'UPDATE mysql.user SET Password = PASSWORD('test101') WHERE User = 'root'; FLUSH PRIVILEGES; 

我可以在主机上使用mysql -u root -ptest101访问,但不能使用mysql -u root -ptest101 -h xxx.xxx.xxx.xxx

哇…为什么会这样呢? 我是12.04

 mysql> SELECT host FROM mysql.user WHERE User = 'root'; +---------------------------------------------+ | host | +---------------------------------------------+ | % | | 127.0.0.1 | | ::1 | | | localhost | +---------------------------------------------+ 5 rows in set (0.00 sec) 

你的root帐号,这个语句适用于任何帐号,可能只能添加localhost权限(推荐)。

你可以检查这个:

 SELECT host FROM mysql.user WHERE User = 'root'; 

如果只能看到localhost127.0.0.1结果,则不能从外部源连接。 如果您看到其他IP地址,但不是您所连接的那个IP地址,那也是一个指示。

您需要添加要授予访问权限的每个系统的IP地址,然后授予权限:

 CREATE USER 'root'@'ip_address' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'ip_address'; 

如果你看到% ,那么还有另外一个问题,那就是“任何远程来源”。 但是,如果您希望任何/所有系统都通过root进行连接,请使用%通配符来授予访问权限:

 CREATE USER 'root'@'%' IDENTIFIED BY 'some_pass'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; 

最后,重新加载权限,你应该能够进行远程访问:

 FLUSH PRIVILEGES; 

以下两步对我来说工作得很好:

  1. 从文件/etc/mysql/my.cnf注释掉绑定地址:

    #bind-address = 127.0.0.1

  2. 在phpMyAdmin中运行以下查询:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

 $mysql -u root --host=127.0.0.1 -p mysql>use mysql mysql>GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'redhat@123'; mysql>FLUSH PRIVILEGES; mysql> SELECT host FROM mysql.user WHERE User = 'root'; 

mysql> CREATE USER'name'@'%'IDENTIFIED BY'passWord'; 查询OK,0行受影响(0.00秒)

mysql>授予所有特权 命名'@'%'; 查询OK,0行受影响(0.00秒)

mysql> FLUSH PRIVILEGES; 查询OK,0行受影响(0.00秒)

MySQL的>

  1. 确保你有你的名字和%正确的方式
  2. 确保你已经将你的端口3306添加到你正在运行的任何防火墙(尽pipe这会给出不同的错误信息)

希望这可以帮助别人…

对于那些能够访问cPanel的人来说,有一个更简单的方法来解决它。

  1. 在DATABASES部分下logincpanel =>“远程MySQL”:

  2. 添加您正在访问的IP /主机名

  3. 完成!

去PhpMyAdmin,点击所需的数据库,进入Privilages选项卡,并创build新的用户“远程”,并给予他所有privilages和主机字段设置“任何主机”选项(%)。

有一个简单的方法来解决这个错误

只需要replace文件夹中的文件: C:\xampp\mysql\data\mysql

与文件: C:\xampp\mysql\backup\mysql