gpt4 book ai didi

debian - 通过telnet连接mysql服务器

转载 作者:行者123 更新时间:2023-12-02 08:43:10 24 4
gpt4 key购买 nike

我在 debian Linux 系统中运行 mysql,该系统在 Windows 7 上的虚拟机上运行。我已修改 iptables 以接受来自端口 3306 上的任何位置的连接 - 但我无法从 Windows 对其进行 telnet。虽然我可以 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 虚拟机,但是当我尝试从 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 仅绑定(bind)到 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

 bind-address   = 0.0.0.0

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

 bind-address   = 192.168.1.2

如果您使用 ipv6 或其他配置,上述内容将会有所不同。

另请参阅:http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_bind-address

注意

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

关于debian - 通过telnet连接mysql服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com