连接到远程 MySQL 主机解析为我的 IP 地址?

3

我有一个允许远程连接的MySQL服务器(我知道它可以工作,因为还有其他人远程连接到它),但是当我从我的电脑连接时,主机地址解析为我的家庭IP地址?

当我对MySQL主机地址进行ping时,它会给我应该解析到的正确IP地址,但是当我将MySQL主机地址放入MySQL连接命令中时,它会显示Access denied for user@{MY_HOME_IP_HERE}

这里是一张截图enter image description here

我正在使用Windows 7机器连接。 我尝试使用命令提示符和HeidiSQL连接,结果相同。

有什么想法吗?


2
错误信息中包含了您连接的计算机的IP地址。您应该授予用户 david@173.10.93.222 的访问权限。 - baf
1
只有当那是一个静态IP时,这才有效。如果它是动态的,一旦IP更改,这将失败,然后他需要使用通配符(这是不推荐的)。 - Lelio Faieta
2个回答

2

我知道这是一个老问题,但昨天我也遇到了同样的问题,花了整整一天的时间才弄清楚,所以在这里分享我的经验。

你提到其他人可以访问它,所以如果你已经从另一个位置(或其他位置)访问mysql数据库,你可以要求他们运行以下命令:

select user, host from mysql.user;

这将基本上显示可以访问数据库的用户以及他们可以从哪里访问(%符号表示从任何地方访问)。

当您正在运行时

mysql -h hostname -u david -p

主机名确实是MySQL所在的主机,这就是为什么DNS查询工具(如dig,在这种情况下您使用了ping)将解析到主机IP的原因。

您之所以收到

david@yourIP访问被拒绝

是因为在mysql.user表中,您的用户不被允许从那里登录。基本上,您需要检查mysql.user表中您的用户可以从哪里访问。管理员可以运行类似以下的命令:

UPDATE mysql.user SET host = '%' WHERE user = 'david';

请注意,在没有适当的防火墙规则的情况下,这并不被推荐,因为它将允许从任何地方连接。

1
重点是您的用户未被授权从该IP访问mysql服务器。在mysql服务器中更改您的用户以添加您的IP(如果是公共的),或者如果您的IP是动态的,则使用通配符(不太安全的解决方案)。 如果您使用phpMyAdmin,那么很容易获得。

3
在主机名部分,星号(*)不能用作通配符,应该使用百分号(%)。如果是动态地址,为了更安全的解决方案,可以使用子网的通配符:david@173.10.% - baf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接