147

为什么哦为什么我无法连接到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)
4

7 回答 7

362

您的root帐户以及此声明适用于任何帐户,可能仅添加了 localhost 访问权限(推荐)。

您可以通过以下方式检查:

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

如果您只看到带有localhost和的结果127.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;
于 2013-09-30T18:37:15.507 回答
24

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

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

    #bind-address = 127.0.0.1

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

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

于 2014-10-11T09:56:01.430 回答
19
$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';
于 2016-04-28T06:26:57.987 回答
2

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

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

mysql> 刷新权限;查询正常,0 行受影响(0.00 秒)

mysql>

  1. 确保您的姓名和百分比正确
  2. 确保您已将端口 3306 添加到您可能正在运行的任何防火墙中(尽管这会给出不同的错误消息)

希望这可以帮助某人...

于 2015-08-05T12:48:26.847 回答
0

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

  1. 在 DATABASES 部分下登录 cpanel => "Remote MySQL":

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

  3. 完毕!!!

于 2016-09-16T06:09:12.537 回答
-5

转到 PhpMyAdmin,单击所需的数据库,转到权限选项卡并创建新用户“远程”,并为他提供所有权限并在主机字段中设置“任何主机”选项(%)。

于 2014-07-22T11:03:12.697 回答
-13

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

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

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

于 2015-09-18T16:55:37.497 回答