Czasami może być przydatne włączenie zdalnych połączeń z MySQL. Pozwala to na bezpośrednie połączenie z MySQL na jednym z twoich serwerów z aplikacji lub klienta MySQL działającego w innym systemie.
Istnieją dwa różne sposoby zdalnego dostępu do MySQL:
- Korzystanie z tunelu SSH.
- Włączenie bezpośredniego dostępu do MySQL z systemów zdalnych.
Łączenie z MySQL za pomocą tunelu SSH
Korzystanie z tunelu SSH jest najłatwiejszą i najbezpieczniejszą opcją zdalnego dostępu do MySQL w celach programistycznych. Tunel SSH sprawi, że będzie wyglądało to tak, jakby MySQL działał w twoim lokalnym systemie. SSH robi to, otwierając lokalny port i bezproblemowo przesyłając całą komunikację przez ten port do MySQL działającego na twoim serwerze.
Aby utworzyć tunel SSH z systemu Mac lub Linux, możesz uruchomić polecenie SSH wiersza poleceń z -L
aby włączyć przekierowanie portów lokalnych.
ssh -L localhost:2000:localhost:3306 serverpilot@SERVER_IP_ADDRESS
W powyższym przykładzie SSH otworzy port 2000 w systemie lokalnym, a następnie możesz komunikować się z MySQL, łącząc się z tym portem lokalnym. Na przykład możesz połączyć się za pomocą polecenia MySQL:
mysql --protocol=tcp --host=localhost --port=2000 --user=DB_USER_NAME -pNie opuszczaj --protocol=tcp lub MySQL może po cichu zignorować --host i --port opcje.
Możesz także tworzyć tunele SSH w systemie Windows za pomocą PuTTy, popularnego klienta Windows SSH.
Włączanie bezpośredniego dostępu do MySQL z systemów zdalnych
Ostrzeżenie! Zezwolenie na bezpośredni dostęp do MySQL zwiększa ryzyko ataku na Twój serwer. Ostrzeżenie! MySQL domyślnie nie używa bezpiecznych połączeń. Podręcznik MySQL zawiera więcej informacji na temat SSL z MySQL.Krok 1:Skonfiguruj MySQL, aby nasłuchiwał na wszystkich interfejsach.
Domyślnie MySQL nasłuchuje tylko połączeń na localhost , więc pierwszym krokiem jest ponowne skonfigurowanie MySQL na serwerze bazy danych, aby nasłuchiwał na wszystkich interfejsach. Aby to zrobić, zaloguj się na swój serwer jako root .
Jeśli używasz serwera Ubuntu 16.04 lub 18.04, edytuj ten plik:
/etc/mysql/mysql.conf.d/mysqld.cnf
W przypadku serwerów 14.04 lub 12.04 edytuj ten plik:
/etc/mysql/my.cnf
Znajdź następujący wiersz w dowolnym pliku:
bind-address = 127.0.0.1
Zmień adres powiązania do 0.0.0.0 :
bind-address = 0.0.0.0
Zapisz ten plik, a następnie uruchom następujące polecenie jako root :
sudo service mysql restart
Krok 2:Otwórz port TCP 3306 w zaporze serwera.
Zapora skonfigurowana przez ServerPilot blokuje wszelki dostęp do MySQL spoza Twojego serwera. Musisz więc dostosować zaporę sieciową, aby umożliwić dostęp do MySQL.
Aby uzyskać dostęp do MySQL spoza serwera, zapoznaj się z naszym artykułem na temat dostosowywania zapory.
Dodatkowy krok dla EC2:Zezwól na port TCP 3306 w swoich grupach bezpieczeństwa.
Jeśli jest to serwer EC2, musisz również zezwolić na port 3306 w grupach zabezpieczeń serwera.
Skonfiguruj swoje aplikacje do korzystania ze zdalnego hosta.
Po skonfigurowaniu zdalnego serwera MySQL będziesz chciał skonfigurować swoje aplikacje, aby używały tego hosta do transakcji bazodanowych. Jest to zwykle konfigurowane w pliku konfiguracyjnym aplikacji, a jako przykład użyjemy WordPressa.
Otwórz plik wp-config.php aplikacji.
W tej linii:
define('DB_HOST', 'localhost');
Zmień „localhost” na adres IP zdalnego serwera MySQL lub pełną nazwę hosta. Adres IP będzie zazwyczaj szybszym i bardziej niezawodnym wyborem, ponieważ nie zależy od rozwiązania DNS.
Zapisz plik i wyjdź, i gotowe! Możesz teraz przetestować swoją aplikację, aby upewnić się, że działa poprawnie.