Hervatte oplossing:
Ik heb de mysqld die de 3306-poort bevatte uitgeschakeld en opnieuw opgestart.
Ik denk dat dit een bug of iets gerelateerd is, controleer stap voor stap wat ik heb gedaan:
1- Een programma gemaakt om verbinding te maken op 3306
Eerst maak ik een eenvoudig programma in Java om er zeker van te zijn dat er geen problemen zijn met mijn firewall. Het programma opent gewoon een poort op 3306 met een TCP-verbinding met 2 minuten alleen om te testen, het programma:
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- De mysql-service gestopt
Voordat ik het programma uitvoerde heb ik de mysql-service gestopt:
sudo service mysql stop
of het kan worden gedaan met:
/etc/init.d/mysql stop
3- Mijn programma gestart met java PortMysqlTest
Mijn programma (PortMysqlTest) geeft een uitzondering door te zeggen dat het adres/de poort al in gebruik is door mysqld!
Verrassing? Voor zover ik weet is de met mysql-service gestopt, zou de poort vrij moeten zijn. Heb ik gelijk? (Ik weet niet zeker of iemand dit kan beantwoorden...)
4- Ik heb gezocht naar de applicatie-PID die het adres/de poort gebruikte met:
sudo netstat -lpn | grep 3306
het antwoord:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- Ik heb het proces afgebroken met:
kill -9 6736
OBS, als je niet weet wat kill doet:6736 is het proces dat de poort vasthield, ik kreeg dit nummer met stap 4, 6736/mysqld
6- Nu voer ik mijn programma opnieuw uit:
java PortMysqlTest en verbonden met telnet (telnet 66.123.173.170 3306) extern en het werkte !
Dus het probleem was niet de firewall , omdat ik extern verbinding kon maken met de machine 66.123.173.170.
7- De mysql-service opnieuw gestart:
(Ik heb 2 minuten gewacht totdat mijn programma stopt en de 3306-poort vrijmaakt) en startte de mysql-service opnieuw om te testen, met:
sudo service mysql start
of
sudo /etc/init.d/mysql start
8- Ik heb extern verbonden met telnet:
telnet 66.123.173.170 3306
en werkte!!!
Nadat ik probeerde verbinding te maken met mysql met:
mysql -h 66.123.173.170 -u root -p
en werkte!!!
Conclusie: Ik denk dat er een fout was met mijn MySql-installatie; of zoiets, (ik weet niet wat het is), bij het herstarten van mysql krijgt de mysql niet de configuratie van:
bind-address = 0.0.0.0
of
bind-address = *
Ik hoop dat dit iemand anders helpt.