Jeśli pracujesz z Baza danych MySQL, to już wiesz, z jakimi wyzwaniami mierzysz się w zabezpieczaniu bazy danych. Od prób włamań do bazy danych przy użyciu wstrzyknięć SQL po ataki typu brute force, trudno jest zapewnić bezpieczeństwo danych, zwłaszcza jeśli pracujesz z bazą danych zdalnie.
Istnieją sposoby na skonfigurowanie serwera SQL, aby umożliwić połączenia zdalne , ale musisz być ostrożny, ponieważ zezwolenie na zdalne połączenia na serwerze MySQL może sprawić, że Twoja baza danych stanie się łatwym celem dla hakerów. Jeśli chcesz zezwolić na bezpieczne, zdalne połączenia z bazą danych MySQL, oto, co musisz wiedzieć.
Przed Tobą Rozpocznij
Przed wprowadzeniem jakichkolwiek zmian w bazie danych MySQL ważne jest, aby utworzyć kopię zapasową bazy danych, zwłaszcza jeśli pracujesz na serwerze produkcyjnym (serwerze w aktywnym użytkowaniu). Wszelkie zmiany wprowadzone w bazie danych lub serwerze, na którym jest ona hostowana, mogą spowodować poważną utratę danych, jeśli coś pójdzie nie tak.
Możesz również zauważyć, że zmiany w połączeniach serwera mogą uniemożliwić Ci późniejszy dostęp do niego. W takim przypadku konieczne może być skonsultowanie się z administratorem serwera w celu uzyskania dalszej pomocy. Dobrym pomysłem jest wypróbowanie wszelkich zmian na lokalnie uruchomionym serwerze MySQL, aby sprawdzić, czy zmiany działają przed wypróbowaniem ich zdalnie.
Prawdopodobne jest również, że jeśli wprowadzasz zmiany na zdalnym serwerze, nie chcesz Potrzebuję bezpiecznego sposobu na łączenie się i wprowadzanie zmian. SSH (Secure Shell)jest często najlepszym sposobem na zrobienie tego, ponieważ umożliwia połączenie ze zdalnym serwerem. Możesz także użyć SSH do łączenia się z serwerami w sieci lokalnej, takimi jak te hostowane na Raspberry Pi.
Ten przewodnik poprowadzi Cię przez kroki, aby konfigurowanie MySQL w celu umożliwienia połączeń zdalnych, ale musisz najpierw upewnić się, że masz bezpośredni lub zdalny dostęp do serwera hostującego Twój serwer MySQL.
Załóżmy, że nie masz zdalnego dostępu do serwera przez SSH (na przykład). W takim przypadku nie będziesz w stanie skonfigurować bazy danych MySQL, aby zezwalać na połączenia zdalne bezpośrednio, chyba że Twoje konto root mySQL już zezwala na połączenia zdalne. Musisz więc najpierw nawiązać to połączenie, zanim będziesz mógł kontynuować.
Edycja pliku konfiguracyjnego MySQL
Pierwszy krok w konfiguracji MySQL, aby umożliwić zdalne połączeniami jest edycja pliku konfiguracyjnego MySQL. Na tym etapie ten przewodnik zakłada, że masz już połączenie z serwerem, komputerem PC lub Mac, na którym znajduje się Twoja baza danych mySQL, i masz dostęp do konsoli.
Alternatywnie możesz skonfigurować lokalny serwer MySQL za pomocą otwartego terminala w systemie Mac lub Linux lub edytora tekstu w systemie Windows.
Wspomniane powyżej lokalizacje są lokalizacjami domyślnymi dla plików konfiguracyjnych MySQL. Jeśli te polecenia nie działają, musisz wyszukać odpowiednie pliki (my.cnf, mysqld.cnflub my.ini) ręcznie, aby zlokalizować odpowiednią ścieżkę pliku.
Ustawianie zakresu adresów IP bezpiecznego powiązania
- Następnie użytkownicy systemów Linux i Mac mogą ponownie uruchomić MySQL, wpisując mysql.server stop && mysql.server startlub mysql.server restart. Może być konieczne podniesienie poziomu polecenia używając sudo (np. sudo mysql.server restart) i użycie odpowiedniej ścieżki do pliku mysql.server (np. /usr /local/bin/mysql.server).
Jeśli nie masz pewności co do prawidłowej nazwy usługi w systemie Windows, wpisz net start, aby ją znaleźć.Jeśli nie możesz ponownie załadować konfiguracji, uruchom ponownie serwer i ręcznie załaduj MySQL (jeśli to konieczne).
Konfigurowanie zapór sieciowych
Na tym etapie Twoja baza danych MySQL powinna zezwalać na zdalne połączenia z urządzeń korzystających z adresu IP ustawionego jako wartość bind-addressw pliku konfiguracyjnym MySQL (lub ze wszystkich urządzeń, jeśli ustawisz tę wartość na 0.0.0.0zamiast tego). Jednak połączenia będą nadal blokowane przez zaporę urządzenia lub sieci.
Większość serwerów i komputerów używa zapory do blokowania połączeń, chyba że uzyskasz dostęp do określonego portu. Kroki, aby to skonfigurować, będą się różnić w zależności od tego, czy używasz MySQL w systemie Windows czy Linux. Zapory sieciowe dla komputerów Mac są domyślnie wyłączone, więc nie musisz wykonywać tutaj żadnych dodatkowych czynności.
Skonfiguruj zapory ogniowe dla systemu Linux
Wiele serwerów z systemem Linux korzysta z iptablesjako domyślne narzędzie zapory sieciowej. Możesz go skonfigurować, wykonując poniższe czynności.
Jeśli iptables nie jest domyślnym narzędziem zapory sieciowej dla Twojej dystrybucji Linuksa, musisz zapoznać się z instrukcją obsługi swojej dystrybucji, aby uzyskać więcej informacji. Jeśli niektóre pakiety (takie jak netfilter-persistent) są niedostępne, użyj narzędzia repozytorium oprogramowania swojej dystrybucji, aby je zainstalować (np. sudo apt install netfilter-persistent).
Skonfiguruj zapory systemu Windows
Jeśli używasz komputera lub serwera z systemem Windows do hostowania bazy danych, możesz skonfigurować zaporę sieciową, wykonując następujące czynności:
Jeśli masz problemy z połączeniem, powtórz powyższe kroki , pamiętając o utworzeniu nowej reguły ruchu wychodzącegow ustawieniach zapory sieciowej przy użyciu tych samych szczegółów (port 3306 itd.). Może być również konieczne skonfigurowanie routera sieci lokalnej na otwórz niezbędne zablokowane porty, aby zezwolić na połączenia przychodzące i wychodzące z bazą danych.
Łączenie ze zdalnym serwerem za pomocą MySQL
Po skonfigurowaniu bazy danych MySQL w celu umożliwienia połączeń zdalnych musisz faktycznie nawiązać z nią połączenie. Możesz to zrobić za pomocą polecenia mysql(mysql.exew systemie Windows) z terminala lub okna PowerShell.
Jeśli używasz systemu Windows, musisz upewnić się, że MySQL jest instalowany lokalnie przed rozpoczęciem. Użytkownicy komputerów Mac mogą zainstalować MySQL za pomocą homebrew z terminala (brew install mysql), podczas gdy użytkownicy Linuksa mogą korzystać z lokalnego repozytorium aplikacji (np. sudo apt install mysql), aby zainstalować niezbędne pakiety.
Łączenie z MySQL w systemie Linux lub Mac
Łączenie z MySQL w systemie Windows
Jeśli to nie zadziała, połącz się z serwerem lub komputerem, na którym znajduje się Twój serwer MySQL, używając SSH (lub uzyskaj do niego bezpośredni dostęp), wykonując te czynności i używając argumentu -h localhost. Następnie możesz utworzyć odpowiednie konto użytkownika, wykonując poniższe czynności.
Zezwalanie użytkownikowi na zdalny dostęp do bazy danych MySQL
W tym momencie powinieneś być możliwość zdalnego łączenia się z serwerem MySQL przy użyciu konta użytkownika root serwera lub innego konta użytkownika z podwyższonymi uprawnieniami. Ponieważ ten poziom dostępu jest niebezpieczny, możesz chcieć utworzyć bardziej ograniczone konto, aby uzyskać dostęp do bazy danych MySQL.
To konto będzie miało ograniczony dostęp do Twojego serwera MySQL, umożliwiając mu interakcję tylko z wybranymi bazami danych. Nie będzie w stanie wprowadzać poważniejszych zmian, takich jak dostęp do innych danych bazy danych, tworzenie nowych kont użytkowników itp.
Musisz mieć możliwość zdalnego logowania się do serwera MySQL. Jeśli nie możesz zdalnie użyć swojego konta root, musisz uzyskać dostęp do powłoki serwera za pomocą polecenia mysqlza pośrednictwem zdalnego połączenia SSH lub przez bezpośredni dostęp do komputera lub serwera, na którym znajduje się serwer.
Po przyznaniu dostępu wykonaj czynności opisane w powyższej sekcji, aby zdalnie połączyć się z serwerem przy użyciu nowego konta (np. mysql -u nazwa użytkownika -h XXXX:XXXX -p).
Zabezpieczenie danych bazy danych
Niezależnie od tego, czy pracujesz z MySQL, czy z innym typem SQL bazy danych, ważne jest, aby zapewnić bezpieczeństwo połączeń, aby zachować bezpieczeństwo danych. Dobrym sposobem na to jest generuj klucze SSH do zdalnego dostępu do swojego serwera, zamiast polegać na nieaktualnych (i łatwych do odgadnięcia) hasłach.
Jeśli martwisz się utratą danych, możesz z łatwością wykonaj kopię zapasową swojej bazy danych online. Większość baz danych działa na serwerach Linux — możesz łatwo zautomatyzuj tworzenie kopii zapasowych plików w systemie Linux. Jeśli używasz MySQL w systemie Windows, możesz skonfigurować podobne automatyczny system tworzenia kopii zapasowych dla Windows, co pozwoli Ci przywrócić dane w nagłych wypadkach.