Eu finalmente tive tempo de cavar a fonte do mysql 5.6. A linha 2405 do mysqld.cc parece conter algumas respostas.
/*
For interoperability with older clients, IPv6 socket should
listen on both IPv6 and IPv4 wildcard addresses.
Turn off IPV6_V6ONLY option.
NOTE: this will work starting from Windows Vista only.
On Windows XP dual stack is not available, so it will not
listen on the corresponding IPv4-address.
*/
if (a->ai_family == AF_INET6)
{
arg= 0;
if (mysql_socket_setsockopt(ip_sock, IPPROTO_IPV6, IPV6_V6ONLY,/* Line: 2405 */
(char *) &arg, sizeof (arg)))
{
sql_print_warning("Failed to reset IPV6_V6ONLY flag (error: %d). "
"The server will listen to IPv6 addresses only.",
(int) socket_errno);
}
}
Configurar essa opção de soquete faz com que a linha extra 0.0.0.0:3306
apareça em netstat
. No entanto, ainda não consigo me conectar especificando 127.0.0.1
para telnet.
Os comentários fazem parecer que esta opção só deve ser usada quando um caractere curinga é aplicado, mas parece que a opção é aplicada mesmo quando bind-address
é especificado.
Discussão possivelmente relacionada aqui: link
cache do google: link
EDIT: No relatório de erros (que ainda está em triagem), propus que o MySQL limpe apenas IPV6_V6ONLY ao vincular ao endereço curinga *
. Isso parece dar a maior flexibilidade de configuração no my.ini. Se alguns administradores estiverem ligando ::
e se conectando a 127.0.0.1
, eles poderão se surpreender. Vincular *
em vez de ::
iria consertá-lo.