Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zdalne połączenie MySQL [nie tak jak zwykle]

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy złącze MySQL/JDBC jest bezpieczne?

  2. Uzyskaj wyniki, które mieszczą się w promieniach znaczników z bazy danych

  3. Zapytanie SQL dla GROUP BY, zwraca grupy, które pasują do warunków NAJMNIEJSZYCH, COALESCE

  4. Utrata połączenia z MySQL po chwili i brak ponownego połączenia

  5. WampServer - mysqld.exe nie może się uruchomić, ponieważ brakuje MSVCR120.dll