ERROR 1130(HY000):不允许主机''连接到此MySQL服务器

时间:2013-09-30 18:30:53

标签: mysql ubuntu

为什么我为什么不能连接到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

哇...为什么会这样?我是ubuntj 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)

7 个答案:

答案 0 :(得分:240)

您的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 :(得分:16)

以下两个步骤对我来说非常合适:

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

    #bind-address = 127.0.0.1

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

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

答案 2 :(得分:9)

$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';

答案 3 :(得分:2)

  

的MySQL>通过'passWord'创建用户'name'@'%'IDENTIFIED;查询OK,0   受影响的行(0.00秒)

     

的MySQL>在上授予所有特权。为''命名'@'%';查询OK,0行   受影响(0.00秒)

     

的MySQL> FLUSH特权;查询正常,0行受影响(0.00秒)

     

的MySQL>

  1. 确保您的名字和%正确的方式
  2. 确保您已将端口3306添加到可能正在运行的任何防火墙中(尽管这会产生不同的错误消息)
  3. 希望这有助于某人...

答案 4 :(得分:-1)

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

  1. 登录cpanel => DATABASES部分下的“远程MySQL”:

  2. 添加您正在访问的IP /主机名
  3. 完成!!!

答案 5 :(得分:-4)

转到PhpMyAdmin,点击所需的数据库, 转到Privileges选项卡并创建新用户" remote",并给他所有特权 并在主机字段集"任何主机"选项(%)。

答案 6 :(得分:-9)

有一种简单的方法可以解决此错误

只需替换文件夹上的文件:C:\xampp\mysql\data\mysql

文件位于:C:\xampp\mysql\backup\mysql