Wznowione rozwiązanie:
Zabiłem mysqld, który trzymał port 3306 i zrestartowałem go.
Myślę, że to błąd lub coś związanego, sprawdź krok po kroku, co zrobiłem:
1- Utworzono program do łączenia na 3306
Najpierw tworzę prosty program w Javie, aby upewnić się, że nie ma żadnych problemów z moją zaporą ogniową. Program po prostu otwiera port na 3306 z połączeniem TCP przez 2 minuty tylko do testowania, 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- Zatrzymano usługę mysql
Przed uruchomieniem programu zatrzymałem usługę mysql:
sudo service mysql stop
lub można to zrobić za pomocą:
/etc/init.d/mysql stop
3- Uruchomiono mój program za pomocą Javy PortMysqlTest
Mój program (PortMysqlTest) zgłasza wyjątek mówiący, że adres/port jest już używany przez mysqld!
Niespodzianka? O ile wiem, po zatrzymaniu usługi mysql port powinien być wolny. Czy mam rację? (Nie jestem pewien, czy ktoś może na to odpowiedzieć...)
4- Szukałem PID aplikacji, która używała adresu/portu z:
sudo netstat -lpn | grep 3306
odpowiedź:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 6736/mysqld
5- Zabiłem proces:
kill -9 6736
OBS, jeśli nie wiesz, co robi kill:6736 to proces, który trzymał port, otrzymałem ten numer w kroku 4, 6736/mysqld
6- Teraz ponownie uruchamiam program:
java PortMysqlTest i połączony z telnetem (telnet 66.123.173.170 3306) zewnętrznie i działało !
Problemem nie była zapora , bo mogłem podłączyć zewnętrznie do maszyny 66.123.173.170.
7- Ponownie uruchomiono usługę mysql:
(Czekałem 2 minuty, aż mój program się zatrzyma i zwolni port 3306) i ponownie uruchomiłem usługę mysql, aby przetestować:
sudo service mysql start
lub
sudo /etc/init.d/mysql start
8- Połączyłem się zewnętrznie przez telnet:
telnet 66.123.173.170 3306
i pracował!!!
Po próbie połączenia z mysql za pomocą:
mysql -h 66.123.173.170 -u root -p
i pracował!!!
Wniosek: Wydaje mi się, że wystąpił błąd w mojej instalacji MySql; lub coś takiego (nie wiem co to jest), po ponownym uruchomieniu mysql mysql nie otrzymuje konfiguracji:
bind-address = 0.0.0.0
lub
bind-address = *
Mam nadzieję, że to pomoże komuś innemu.