Solução retomada:
Eu matei o mysqld que estava segurando a porta 3306 e reiniciei.
Acho que isso é um bug ou algo relacionado verifique passo a passo o que fiz:
1- Criou um programa para conectar em 3306
Primeiro eu crio um programa simples em Java para ter certeza de que não houve nenhum problema com meu firewall. O programa acabou de abrir uma porta no 3306 com conexão TCP por 2 minutos apenas para teste, o programa:
import java.io.IOException;
import java.net.ServerSocket;
public class PortMysqlTest {
public static void main(String[] args) {
int port = 3306;
ServerSocket ss = null;
try
{
ss = new ServerSocket(port);
ss.setReuseAddress(true);
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
long futureTime = System.currentTimeMillis() + 1000 * 60 * 2;
while (System.currentTimeMillis() < futureTime)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (ss != null)
{
try
{
ss.close();
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
}
2- Parou o serviço mysql
Antes de executar o programa eu parei o serviço mysql:
sudo service mysql stop
ou pode ser feito com:
/etc/init.d/mysql stop
3- Iniciei meu programa com java PortMysqlTest
Meu programa (PortMysqlTest) lança uma exceção dizendo que o endereço/porta já está em uso pelo mysqld!
Surpresa? Até onde eu sei, com o serviço mysql parado, a porta deve estar livre. Estou certo? (não tenho certeza se alguém pode responder isso...)
4- Procurei o PID do aplicativo que estava usando o endereço/porta com:
sudo netstat -lpn | grep 3306
a resposta:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- Matei o processo com:
kill -9 6736
OBS, se você não sabe o que kill faz:6736 é o processo que estava segurando a porta, peguei esse número com o passo 4, 6736/mysqld
6- Agora executo meu programa novamente:
java PortMysqlTest e conectado com telnet (telnet 66.123.173.170 3306) externamente e funcionou !
Então o problema não era o firewall , pois consegui conectar externamente à máquina 66.123.173.170.
7- Iniciou o serviço mysql novamente:
(esperei 2 minutos para meu programa parar e liberar a porta 3306) e iniciei o serviço mysql novamente para testar, com:
sudo service mysql start
ou
sudo /etc/init.d/mysql start
8- Conectei-me externamente com telnet:
telnet 66.123.173.170 3306
e funcionou!!!
Depois que tentei me conectar ao mysql com:
mysql -h 66.123.173.170 -u root -p
e funcionou!!!
Conclusão: Acho que houve um bug com minha instalação do MySql;ou algo assim, (não sei o que é), ao reiniciar o mysql o mysql não recebe a configuração de:
bind-address = 0.0.0.0
ou
bind-address = *
Espero que isso ajude mais alguém.