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

Zdalne łączenie się z MySQL w maszynie wirtualnej Google Compute Engine

Właśnie znalazłem rozwiązanie mojego problemu,

Specjalne podziękowania dla @Slava za wskazanie mi drogi, w końcu to był iptables.

Tak więc otrzymywałem komunikat „Odmowa połączenia MySQL” podczas próby zdalnego połączenia, więc szukałem sposobu, aby zobaczyć dzienniki połączeń TCP i znalazłem tcpdump polecenie.

Uruchamiając sudo tcpdump port 3306 -vvv -n Za każdym razem, gdy próbowałem połączyć się zdalnie, widziałem następujące dane wyjściowe:

Przeszukałem stronę podręcznika tcpdump i zobaczyłem, że R oznacza flagę TCP RST (RESET).

Przeszukałem trochę i znalazłem ten pytanie a jego przyjęta odpowiedź doprowadziła mnie ponownie do IPTABLES, które @Slava zasugerował od czasu pierwszego komentarza.

Wtedy przyjrzałem się uważnie i zobaczyłem, że mój INPUT ACCEPT tcp:3306 został zdefiniowany po regule odrzucania TCP REJECT-with tcp-reset, stąd log się wyświetlał.

Po tym po prostu usunąłem regułę akceptowania tcp:3306 i dodałem ją do reguł odrzucania tcp i voila!

iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -I INPUT {line number from the first reject tcp rule} -p tcp -m tcp --dport 3306 -j ACCEPT

IPTABLES teraz wygląda tak i wreszcie mogę połączyć się zdalnie z MySQL:

Aby wyświetlić listę iptables z numerami linii, wpisz:

sudo iptables -nL --line-numbers

Uwagi końcowe:

  • Można to poprawić, umieszczając na białej liście źródłowy adres IP, z którego nawiązujesz połączenie zdalne ze względów bezpieczeństwa.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego ten wyzwalacz MySQL powoduje przepełnienie stosu?

  2. jak importować z MS Excel do MYSQL DB

  3. Jak wywołać procedurę składowaną MySQL w Pythonie?

  4. Najlepszy sposób na usunięcie wartości z pola SET?

  5. Jaka jest nazwa języka programowania MySQL dla SQL?