Debian 通过telnet连接到mysql服务器

Debian 通过telnet连接到mysql服务器,debian,iptables,Debian,Iptables,我在DebianLinux系统中运行mysql,该系统在Windows7上的vm上运行。我已经修改了iptables,可以通过端口3306接受来自任何地方的连接,但我无法从Windows对其进行远程登录。尽管我可以ping虚拟机并确保其可访问 以下是iptables的详细信息: # sudo iptables -L CHAIN INPUT (policy ACCEPT) target prot opt source destination ACCEPT

我在DebianLinux系统中运行mysql,该系统在Windows7上的vm上运行。我已经修改了iptables,可以通过端口3306接受来自任何地方的连接,但我无法从Windows对其进行远程登录。尽管我可以ping虚拟机并确保其可访问

以下是iptables的详细信息:

# sudo iptables -L
CHAIN INPUT (policy ACCEPT)
target        prot opt source        destination
ACCEPT        tcp  --  anywhere      anywhere         tcp dpt:mysql

CHAIN FORWARD (policy ACCEPT)
target        prot opt source        destination

CHAIN OUTPUT (policy ACCEPT)
target        prot opt source        destination
#
以下是我为添加规则所做的:

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
我可以成功ping到debian vm,但当我尝试从windows主机执行telnet时,我得到:

Could not open connection to the host, on port 3306: Connect failed
我还试着在debian内部使用telnet。以下是我得到的:

$ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
6
5.1.73-1*?MH]~"* wG;2(oz9JJrConnection closed by foreign host.
$
debian系统会等待一段时间,然后自行关闭连接。或者我可以执行^]并关闭它。

问题-安全权限紧张 如果您运行的是默认的Debian wheezy安装,那么就可以配置文件/etc/mysql/my.cnf,以便mysql只绑定到127.0.0.1—这就解释了为什么您可以从机箱内部而不是外部进行telnet

如果您运行:

sudo netstat-lntp
你看

tcp         0    0   127.0.0.1:3306      0.0.0.0.*     LISTEN     1234/mysqld
而且没有其他mysqld条目,事实确实如此

一个解决方案 编辑文件/etc/mysql/my.cnf并更改以下行:

 bind-address   = 127.0.0.1

或者,改为以下行,其中192.168.1.2是Debian VM来宾的静态IP地址:

 bind-address   = 192.168.1.2
如果您使用的是ipv6或其他配置,上述内容将有所不同

另见:


返回的零有效负载长度TCP数据包(粗略地说)是RST、ACK数据包,它们告诉您的Windows计算机该接口上的端口上没有任何内容正在侦听。这确实证明了Windows防火墙不是问题所在。

您的虚拟机是否使用主机网络?如果不桥接,可能会给您带来问题?您的Windows防火墙是如何配置的?抱歉,请重新阅读您可以ping…您可以从Debian内部远程登录到它吗?@AndrewMcDonnell谢谢。我已经用结果更新了问题。@Andrewmcdonell telnet连接将自动关闭,正如我前面提到的。谢谢您的详细回答。我的telnet成功了。尽管我真正想做的是将Windows上的NodeJS服务器连接到debian上的mysql服务器。我想这应该不再是个问题了吧?我想,我对NodeJS还不太了解!
 bind-address   = 192.168.1.2