【问题标题】:Connecting to remote MySQL host resolves to my IP address?连接到远程 MySQL 主机解析到我的 IP 地址?
【发布时间】:2015-07-07 15:30:40
【问题描述】:

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

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

这是截图

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

想法?

【问题讨论】:

  • 在错误消息中有您连接的计算机的 IP。您应该授予用户 david@173.10.93.222 访问权限。
  • 只有当它是静态 IP 时才有效。如果它是动态的,一旦 IP 更改,这将失败,然后他需要使用通配符(不推荐)

标签: mysql connect


【解决方案1】:

我知道这是一个老问题,但我昨天遇到了同样的问题,我花了一整天的时间才弄明白,所以在这里找到我的 5 美分。

您提到其他人可以访问它,所以如果您已经可以从其他位置(或其他位置)访问 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';

请注意,如果没有适当的防火墙规则,不建议这样做,因为它允许从任何地方进行连接。

【讨论】:

    【解决方案2】:

    关键是您的用户无权从该 IP 访问 mysql 服务器。在 mysql 服务器中,更改您的用户以添加您的 IP(如果是公共的),或者如果您的 IP 是动态的(不太安全的解决方案),则使用通配符。 如果你使用 phpMyAdmin 很容易得到

    【讨论】:

    • 星号 (*) 不允许作为主机名部分的通配符。您应该使用百分号 (%)。为了更安全的解决方案,如果是动态地址,可以为子网使用通配符:david@173.10.%
    猜你喜欢
    • 2021-01-04
    • 2011-12-06
    • 2012-10-23
    • 2013-03-25
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    相关资源
    最近更新 更多