Obnovené řešení:
Zabil jsem mysqld, který držel port 3306, a restartoval jsem ho.
Myslím, že se jedná o chybu nebo něco souvisejícího, zkontrolujte krok za krokem, co jsem udělal:
1- Vytvořil program pro připojení k 3306
Nejprve vytvořím jednoduchý program v Javě, abych se ujistil, že nemám problém s mým firewallem. Program jen otevře port na 3306 s připojením TCP o 2 minuty jen pro testování, program:
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- Zastavena služba mysql
Před spuštěním programu jsem zastavil službu mysql:
sudo service mysql stop
nebo to lze provést pomocí:
/etc/init.d/mysql stop
3- Program byl spuštěn pomocí java PortMysqlTest
Můj program (PortMysqlTest) vyvolá výjimku, která říká, že adresa/port je již používán mysqld!
Překvapení? Pokud vím, při zastavení služby mysql by měl být port volný. Mám pravdu? (Nejsem si jistý, jestli na to někdo dokáže odpovědět...)
4- Hledal jsem PID aplikace, která používala adresu/port s:
sudo netstat -lpn | grep 3306
odpověď:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- Proces jsem ukončil pomocí:
kill -9 6736
OBS, pokud nevíte, co dělat kill:6736 je proces, který držel port, toto číslo jsem získal v kroku 4, 6736/mysqld
6- Nyní znovu spustím svůj program:
java PortMysqlTest a připojen k telnetu (telnet 66.123.173.170 3306) externě a fungovalo to !
Problémem tedy nebyl firewall , protože jsem se mohl externě připojit ke stroji 66.123.173.170.
7- Znovu byla spuštěna služba mysql:
(Počkal jsem 2 minuty, než se můj program zastaví a uvolní port 3306) a znovu spustil službu mysql, abych otestoval:
sudo service mysql start
nebo
sudo /etc/init.d/mysql start
8- Připojil jsem se externě pomocí telnetu:
telnet 66.123.173.170 3306
a fungovalo!!!
Poté, co jsem se pokusil připojit k mysql pomocí:
mysql -h 66.123.173.170 -u root -p
a fungovalo!!!
Závěr: Myslím, že se vyskytla chyba v mé instalaci MySql; nebo tak něco (nevím, co to je), při restartování mysql mysql nezíská konfiguraci:
bind-address = 0.0.0.0
nebo
bind-address = *
Doufám, že to pomůže někomu dalšímu.