bind-address = ::1 # 然而,netstat 显示 0.0.0.0:3306 LISTENING

eby*_*rob 6 windows-7 mysql ipv6 netstat

我在启用了 IPv6 和 IPv4 的 64 位 Windows 7 上运行 MySQL 5.6。

在我的.ini中:

port=3306
bind-address = ::1
Run Code Online (Sandbox Code Playgroud)

我希望使用 IPv6 并限制为环回适配器。我使用::1而不是127.0.0.1因为带有 IPv6 的 win7 默认为::1for localhost

使用此配置 netstat 报告以下内容:

C:\>netstat -an |findstr 3306
  TCP    0.0.0.0:3306           0.0.0.0:0              LISTENING
  TCP    [::1]:3306             [::]:0                 LISTENING
Run Code Online (Sandbox Code Playgroud)

似乎连接可能在 IPv4 接口上被阻止,但看到 netstat 报告0.0.0.0端口3306已打开让我感到不安。

MySQL文档指定:

如果地址是“常规”IPv4 或 IPv6 地址(例如 127.0.0.1 或 ::1),则服务器仅接受针对该 IPv4 或 IPv6 地址的 TCP/IP 连接。

TCPView 给了我与 netstat 相同的信息。我无法让 TDIMon 在我的系统上工作。

如何防止 mysql 监听0.0.0.0

Mic*_*ton 4

我在这里看到两种可能性:

  1. 实际上,您运行着两个 MySQL 副本,其中一个绑定到 IPv4,另一个绑定到 IPv6。这可能不太可能,但无论如何您都应该检查一下。

  2. 您在 MySQL 的 Windows 端口中发现了一个错误。当我在 Linux 上尝试此操作时,bind-address = ::1导致 MySQL 仅绑定到::1任何 IPv4 地址,而不绑定到任何 IPv4 地址。在这种情况下,您应该将其作为错误报告给 MySQL。