ERROR 1130(HY000) : Host”不允许连接到此 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)
380539 次浏览

您的 root帐户(此语句适用于任何帐户)可能只是通过本地主机访问添加的(建议使用本地主机访问)。

你可以通过以下方式查看:

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

如果只能看到 localhost127.0.0.1的结果,则无法从外部源连接。如果你看到其他的 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;

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

以下两个步骤对我来说非常有效:

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

    #bind-address = 127.0.0.1

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

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

创建用户‘ name’@’%’IDENTIFIED BY‘ passWord’; 查询 OK,0 行受影响(0.00秒)

.上的所有特权授予‘ name’@’%’; 查询 OK,0行 受影响(0.00秒)

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

Mysql >

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

希望这能帮到某人。

有一个简单的方法来修复这个错误

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

档案开着: C:\xampp\mysql\backup\mysql

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

对于那些能够访问 cpanel 的人,有一个更简单的方法绕过它。

  1. 在 DATABASES 部分登录 cpanel = > “ Remote MySQL”:

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

  3. 搞定!