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

Utwórz tunel SSH dla zdalnego dostępu do MySQL

Z tego przewodnika dowiesz się, jak nawiązać bezpieczne połączenie ze zdalnym serwerem MySQL lub MariaDB z komputera lokalnego przy użyciu tunelu SSH . Jest to przydatne, jeśli chcesz używać narzędzi administracyjnych na komputerze lokalnym do pracy na serwerze.

Tunel SSH to zaszyfrowany tunel utworzony przez połączenie protokołu SSH. Możesz użyć tunelu SSH do zdalnej komunikacji z bazą danych MySQL. Po wykonaniu tych instrukcji będziesz mógł połączyć się z localhost na swojej stacji roboczej za pomocą ulubionego narzędzia do zarządzania MySQL. Połączenie zostanie bezpiecznie przekazane do Linode przez Internet.

Uwaga MariaDB to rozwidlenie MySQL i uważane za zamiennik drop-in. Chociaż ten przewodnik odnosi się do MySQL, dotyczy on również MariaDB.

Wymagania wstępne

  • MySQL jest zainstalowany.
  • MySQL jest skonfigurowany do nasłuchiwania na localhost (127.0.0.1). Jest to domyślnie włączone.

Jak uzyskać zdalny dostęp do MySQL, tworząc tunel SSH za pomocą PuTTY

W tej sekcji dowiesz się, jak utworzyć tunel SSH do MySQL w systemie Windows za pomocą narzędzia PuTTY.

Konfigurowanie tunelu

Najpierw musisz nawiązać podstawowe połączenie z Linode:

  1. PobierzPuTTY.

  2. Zapisz PuTTY na swoim pulpicie.

  3. Kliknij dwukrotnie plik PuTTY, aby rozpocząć — nie trzeba instalować. Zobaczysz następujące okno:

  4. Wprowadź nazwę hosta lub adres IP swojego Linode w Nazwie hosta (lub adresie IP) pole.

  5. W menu po lewej stronie przejdź do Połączenie -> SSH -> Tunele .

  6. W portu źródłowym pole, wpisz 3306 .

  7. W miejscu docelowym pole wpisz 127.0.0.1:3306 . Zobacz ostateczną konfigurację poniżej:

  8. Kliknij Otwórz aby rozpocząć sesję SSH.

  9. Jeśli wcześniej nie logowałeś się do tego systemu za pomocą PuTTY, otrzymasz ostrzeżenie podobne do następującego. Sprawdź, czy ten serwer jest tym, z którym chcesz się połączyć, a następnie kliknij Tak :

    Uwaga

    To ostrzeżenie pojawia się, ponieważ PuTTY chce, abyś zweryfikował, czy serwer, do którego się logujesz, jest tym, za kogo się podaje. Jest mało prawdopodobne, ale możliwe, że ktoś może podsłuchiwać twoje połączenie i udawać twojego Linode. Aby zweryfikować serwer, porównaj odcisk palca klucza pokazany w ostrzeżeniu PuTTY – ciąg cyfr i liter zaczynający się od ssh-rsa na powyższym obrazku - za pomocą odcisku palca klucza publicznego Linode. Aby uzyskać odcisk palca Linode, zaloguj się do Linode za pomocą konsoli Lish (patrz Konsola w Linode Manager) i wykonanie następującego polecenia:

    ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
    

    Kluczowe odciski palców powinny się zgadzać. Po kliknięciu Tak , nie będziesz otrzymywać dalszych ostrzeżeń, chyba że z jakiegoś powodu klucz przedstawiony PuTTY ulegnie zmianie; zazwyczaj powinno się to zdarzyć tylko w przypadku ponownej instalacji systemu operacyjnego zdalnego serwera. Jeśli otrzymasz to ostrzeżenie ponownie dla tego samego Linode po tym, jak klucz został już zapisany w pamięci podręcznej, nie powinieneś ufać połączeniu i dalej badać sprawy.

  10. Skieruj swojego lokalnego klienta MySQL do localhost:3306 . Twoje połączenie ze zdalnym serwerem MySQL zostanie zaszyfrowane przez SSH, umożliwiając dostęp do baz danych bez uruchamiania MySQL na publicznym IP.

Utwórz tunel SSH w systemie Mac OS X lub Linux

Ta sekcja pokaże Ci, jak utworzyć tunel SSH do MySQL w systemie Mac OS X lub Linux.

  1. Zainstaluj klienta MySQL. Instalacja serwera MySQL jest dostarczana wraz z instalacją klienta. Aby zainstalować tylko klienta:

    MacOS

    brew install --cask mysql-shell
    

    Ubuntu/Debian

    sudo apt install mysql-client
    
  2. Otwórz wiersz polecenia i uruchom następujące polecenie, aby otworzyć tunel SSH.

    ssh [email protected] -L 3306:127.0.0.1:3306 -N
    

    Zastąp <[email protected]> z nazwą użytkownika SSH i nazwą hosta lub adresem IP serwera. Długi ciąg liczb w poleceniu zawiera lokalny adres IP, port lokalny, zdalny adres IP i zdalny port, oddzielone dwukropkami (: ).

    -L - wiąże port lokalny ze zdalnym wpisem hosta.-N - oznacza przekierowanie portów.

    Uwaga

    Jeśli używasz już lokalnego serwera MySQL na swojej stacji roboczej, użyj innego portu lokalnego (często wybierany jest 3307). Twoje nowe polecenie będzie wyglądać tak:

    ssh [email protected] -L 3307:127.0.0.1:3306 -N
    
  3. Otwórz nowe okno terminala. Skieruj swojego lokalnego klienta MySQL do 127.0.0.1:3306 z nazwą użytkownika i hasłem serwera MySQL.

    MacOS

    mysqlsh --host=127.0.0.1 --port=3306 -u user -p
    

    Ubuntu/Debian

    mysql --host=127.0.0.1 --port=3306 -u user -p
    

    Twoje połączenie ze zdalnym serwerem MySQL zostanie zaszyfrowane przez SSH, umożliwiając dostęp do baz danych bez uruchamiania MySQL na publicznym IP.

  4. Gdy będziesz gotowy do zamknięcia połączenia, wydaj CTRL-C polecenie lub zamknij okno wiersza polecenia. To zamknie tunel SSH.

Stałe połączenia SSH

Jeśli potrzebujesz trwałego tunelu SSH, rozważ użycie autossh. autossh uruchamia i monitoruje połączenie SSH i w razie potrzeby ponownie je uruchamia.

Więcej informacji

Dodatkowe informacje na ten temat można znaleźć w poniższych zasobach. Chociaż są one dostarczane w nadziei, że będą przydatne, należy pamiętać, że nie możemy ręczyć za dokładność ani aktualność materiałów hostowanych zewnętrznie.

  • Korzystanie z PuTTY
  • Dokumentacja MySQL
  • Dokumentacja MariaDB
  • autossh

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrypt sprawdzania kondycji replikacji MySQL

  2. Znajdowanie wszystkich rodziców w tabeli mysql za pomocą pojedynczego zapytania (zapytanie rekurencyjne)

  3. Kiedy powinienem używać indeksu złożonego?

  4. Szukasz prostego wyszukiwania pełnotekstowego? Wypróbuj MySQL InnoDB + CakePHP z Word Stemming

  5. MySQL:#126 – Nieprawidłowy plik klucza dla tabeli