无法连接到远程服务器上的 MySql 服务器

无法连接到远程服务器上的 MySql 服务器
  • 连接到:纳什维尔的 CentOS v?? 和 MySql 4.??(示例公共 IP=11.11.11.11)

    堆栈:电缆调制解调器作为网关 > 带转发功能的路由器 > CentOs Box

  • 连接自:达拉斯的 Windows 2003 R2(示例公共 IP=22.22.22.22)

我尝试通过我的公共 IP 从远程服务器访问我的 MySql 服务器。当我尝试连接时,几秒钟后出现类似“无法打开与主机的连接”的错误。它没有机会要求我提供登录凭据。以下是我为打开此服务器进行远程连接所做的一些事情:

  • 在我的路由器上打开端口 3306 并将其转发到我的 MySql 盒的本地 IP 地址。
  • 按照说明进行操作这篇博文
  • 在 MySql 中创建一个可以访问我想要的数据库的用户([电子邮件保护])** 当然,它甚至还没有走到这一步……我只是想把它包括进去。

当我尝试从达拉斯的机器通过 telnet 连接到纳什维尔的机器(端口 3306)时,我得到了这样的信息:

C:\Documents and Settings\Administrator>telnet 11.11.11.11 3306
Connecting To 11.11.11.11...Could not open connection to the host, on port 3306: Connect failed

但是,我可以从 22.22.22.22 ping 11.11.11.11(抱歉格式不好...我试过了):

C:\Documents and Settings\Administrator>ping 11.11.11.11

使用 32 字节数据对 11.11.11.11 进行 ping 操作:

来自 11.11.11.11 的回复:字节=32 时间=57ms TTL=54 来自 11.11.11.11 的回复:字节=32 时间=61ms TTL=54 来自 11.11.11.11 的回复:字节=32 时间=56ms TTL=54 来自 11.11.11.11 的回复:字节=32 时间=57ms TTL=54

11.11.11.11 的 Ping 统计数据:数据包:已发送 = 4,已接收 = 4,丢失 = 0(丢失率为 0%),以毫秒为单位的近似往返时间:最短 = 56 毫秒,最长 = 61 毫秒,平均 = 57 毫秒

11.11.11.11 的 IP 表内容如下:

[root@centos ~]# /sbin/iptables -L Chain INPUT (policy ACCEPT) target
prot opt source
destination
RH-Firewall-1-INPUT all -- anywhere anywhere
tcp -- 22.22.22.22 anywhere tcp dpt:mysql

链转发(策略接受)目标
保护选择源
目标
RH-Firewall-1-INPUT 全部 -- 任何地方任何地方

链输出(策略接受)目标
保护选择源
目标

链 RH-Firewall-1-INPUT(2 个引用)目标协议选择源目标接受所有 -- 任何地方任何地方接受 icmp -- 任何地方
任何地方 icmp any接受
esp -- 任何地方任何地方接受 ah -- 任何地方
任何地方接受 udp -- 任何地方 224.0.0.251 udp dpt:mdns接受 udp -- 任何地方任何地方
udp dpt:ipp接受 tcp -- 任何地方任何地方
tcp dpt:ipp接受所有 -- 任何地方任何地方
状态相关、已建立接受
tcp -- 任何地方任何地方状态新 tcp dpt:mysql接受
tcp -- 任何地方任何地方状态新 tcp dpt:ssh拒绝所有 -- 任何地方任何地方拒绝 icmp-host-prohibited

@Sunny:目前,本地 IP 地址列在 /etc/my.conf 中。为了查看发生了什么,我将本地 IP 地址替换为 11.11.11.11。当我这样做时,MySql 无法重新启动。我猜想绑定地址必须是框中实际的 IP 地址。

我可以使用本地 IP 地址从同一网络上的另一台计算机连接到 MySql。但是,即使使用本地 IP 地址,我也无法使用 11.11.11.11 进行连接。

有什么想法吗?我不是 Linux 爱好者,所以我有点盲目。

答案1

检查 my.conf 以及 MySql 服务器具有的绑定。

可能是这样,它只在本地网络上监听。

您正在寻找绑定地址/etc/my.conf 或 /etc/mysql/my.conf 中的设置。

如果启用此设置(通常仅绑定到localhost 127.0.0.1),请将其注释掉,它将允许MySql监听所有可用的接口。

无论如何,直接通过互联网访问数据库服务器根本不是一个好主意。

我强烈建议您使用 ssh 隧道通过 Internet 访问机器。

在 Windows 上,您可以使用油灰到 ssh (创建隧道) 进入 MySql 机器。您可以将本地 3306 端口转发到远程端口,然后就可以使用 localhost:3306 访问 MySql 服务器。

相关内容