背景
我正在设置 MySQL 服务器。它的配置文件(my.cnf)没有该bind_address
选项。据我从其文档中了解到,它的值默认为*
,这应该使服务器侦听所有 IPv4 或 IPv6 地址。
问题
当我启动 MySQL 服务器时,我希望它能够侦听 IPv4。相反,它只侦听 IPv6,正如我在下面检查的那样。
$ netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 :::33060 :::* LISTEN
tcp6 0 0 :::3306 :::* LISTEN
# -- snip --
为什么会发生这种情况?如何让MySQL服务器监听IPv4地址?
到目前为止我已经检查过的内容:
- 我确保没有其他配置文件无意中覆盖
bind_address
. 当我查询时,它按预期SELECT @@bind_address
正确显示。*
- 我确认我的系统上配置了 IPv4 网络。运行
ip addr show
显示eth0
已分配 IPv4 地址。事实上,我不认为我的系统配置为 IPv6,因为我没有看到任何inet
带有 IPv6 的系统。 - 当我
bind_address=0.0.0.0
在 my.cnf 中显式设置然后重新启动服务器时,服务器仍然侦听 IPv6 地址,显示与netstat
上面相同的输出。 - 我的系统上没有运行其他 MySQL 服务器实例。
环境
- MySQL服务器:v8.0.36
- 操作系统:CentOS 7