为什么mysql只监听ipv6的3306端口,而不是ipv4的3306端口

dig*_*ack 2 mysql

我刚遇到一个 mysql 问题。
当我用命令启动 mysql 服务时

# service mysqld start 
Run Code Online (Sandbox Code Playgroud)

并且 mysql 服务只是侦听 IPv6 的端口 3306,我认为它是 IPv4 的端口 3306。

?  ~ netstat -ntpl | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN      1897/mysqld
?  ~
Run Code Online (Sandbox Code Playgroud)

my.cnf 如下:

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0

# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

系统:CentOS Linux release 7.2.1511 (Core) mysql 版本:mysqld Ver 5.6.35 for Linux on x86_64 (MySQL Community Server (GPL))

有人会帮我一个忙,并找出我如何更改它以在 IPv4 的 3306 上收听,非常感谢。

小智 6

我花了几个小时终于找到了解决方案!

在 .cnf 文件中必须是 bind-address=0.0.0.0

但不是*,不是127.0.0.1,不是client_address

我不知道为什么,但只有 0.0.0.0 给我:

netstat -a | grep mysql

  tcp mysql

else tcp6 mysql
Run Code Online (Sandbox Code Playgroud)

祝愿!!!