Återupptagen lösning:
Jag dödade mysqld som höll 3306-porten och startade om den.
Jag tror att det här är en bugg eller något relaterat kolla steg-för-steg vad jag gjorde:
1- Skapat ett program för att ansluta på 3306
Först skapar jag ett enkelt program i Java för att se till att det inte var några problem med min brandvägg. Programmet öppnar bara en port på 3306 med TCP-anslutning med 2 minuter bara för att testa, programmet:
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- Stoppade mysql-tjänsten
Innan jag körde programmet stoppade jag mysql-tjänsten:
sudo service mysql stop
eller det kan göras med:
/etc/init.d/mysql stop
3- Startade Mitt program med java PortMysqlTest
Mitt program (PortMysqlTest) ger ett undantag som säger adressen/porten som redan används av mysqld!
Överraskning? Såvitt jag vet bör med mysql-tjänsten stoppad porten vara gratis. Har jag rätt? (Jag är inte säker på om någon kan svara på detta...)
4- Jag sökte efter applikationens PID som använde adressen/porten med:
sudo netstat -lpn | grep 3306
svaret:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- Jag avbröt processen med:
kill -9 6736
OBS, om du inte vet vad kill do:6736 är processen som höll porten, jag fick det här numret med steg 4, 6736/mysqld
6- Nu kör jag mitt program igen:
java PortMysqlTest och ansluten till telnet (telnet 66.123.173.170 3306) externt och det fungerade !
Så problemet var inte brandväggen , eftersom jag kunde ansluta externt till maskinen 66.123.173.170.
7- Startade mysql-tjänsten igen:
(Jag väntade 2 minuter på att mitt program skulle sluta och frigöra 3306-porten) och startade mysql-tjänsten igen för att testa, med:
sudo service mysql start
eller
sudo /etc/init.d/mysql start
8- Jag ansluter externt med telnet:
telnet 66.123.173.170 3306
och fungerade!!!
Efter att jag försökte ansluta till mysql med:
mysql -h 66.123.173.170 -u root -p
och fungerade!!!
Slutsats: Jag tror att det var en bugg med min MySql-installation; eller något, (jag vet inte vad det är), när jag startar om mysql får mysql inte konfigurationen av:
bind-address = 0.0.0.0
eller
bind-address = *
Jag hoppas att det här hjälper någon annan.