Jak zezwolić na zdalne połączenia z MySQL?


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ć.

Spis treści

    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.

    1. Aby rozpocząć, użyj preferowanego edytora tekstu konsoli aby edytować plik bazy danych MySQL. W systemie Linux wpisz sudo nano /etc/mysql/mysql.conf.d/mysqld.cnfw terminalu lub oknie SSH, aby edytować ten plik za pomocą edytora nano(zakładając Twoja baza danych MySQL znajduje się w domyślnej lokalizacji).
      1. Jeśli używasz systemu Windows, otwórz Eksplorator plików i przejdź do folderu zawierającego instalację MySQL (np. C:/Program Files/MySQL/MySQL Server 8.0). Otwórz plik my.iniza pomocą domyślnego edytora tekstu (np. Notatnika), klikając dwukrotnie wpis. Jeśli go tam nie ma, najpierw utwórz plik.
        1. Na komputerze Mac otwórz okno terminala i wpisz sudo nano /usr/local/etc/my.cnf. Jest to domyślny plik konfiguracyjny dla MySQL, jeśli zainstalowałeś MySQL za pomocą homebrew.
        2. 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

          1. Po otworzyłeś plik konfiguracyjny MySQL dla Twojego serwera, użyj klawisza strzałki na klawiaturze, aby przejść do sekcji adres powiązaniapliku. Ten zakres adresów IP ogranicza połączenia z bazą danych, która jest zwykle ustawiona tak, aby zezwalać tylko na połączenia z komputera lokalnego lub serwera przy użyciu 127.0.0.1.
            1. Jeśli chcesz skonfigurować bazę danych MySQL, aby zezwalać na połączenia z urządzeń korzystających z bieżącego połączenia internetowego, najpierw znajdź swój publiczny adres IP, a następnie zastąp 127.0.0.1z tym adresem IP. Alternatywnie zastąp go adresem IP urządzenia lub serwera, z którego chcesz zezwolić na połączenia.
              1. W niektórych okolicznościach , możesz zezwolić na wszystkiezdalne połączenia z bazą danych MySQL. Wiąże się to z ekstremalnym ryzykiemi nie powinno być używane na serwerze produkcyjnym. Jeśli jednak chcesz na to zezwolić, zamień 127.0.0.1na 0.0.0.0.
                1. Zanotuj wartość portw sekcji Ustawienia podstawowe. Będzie to wymagane w następnej sekcji. Jeśli nie jest widoczny, zostanie użyta wartość domyślna, czyli port 3306. Możesz dodać własny port, wpisując port = xxxxw nowym wierszu, zastępując xxxxodpowiednią wartością portu.
                  1. Po skonfigurowaniu adresu powiązaniaw pliku konfiguracyjnym MySQL zapisz plik. Jeśli korzystasz z Linuksa, wybierz Ctrl + Oi Ctrl + X, aby to zrobić. Na Macu wybierz Command + Oi Command + X. Użytkownicy systemu Windows mogą zapisywać, wybierając Plik>Zapisz.
                    1. 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).
                    1.  Jeśli powyższe polecenie nie działa, spróbuj zamiast tego sudo service mysql restart.
                      1. Aby ponownie uruchomić MySQL w systemie Windows, otwórz nowe okno PowerShell, klikając prawym przyciskiem myszy menu Start i wybierając Windows PowerShell (administrator). W oknie PowerShell wpisz net stop mysql80, a następnie net start mysql80, zastępując mysql80prawidłową nazwą usługi na Twoim komputerze.
                      2. 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.

                        1. Otwórz terminal lub połączenie SSH i wpisz sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j AKCEPTUJ. Zastąp XXXXadresem IP urządzenia, z którego chcesz zezwolić na połączenia MySQL z, i zastąp YYYYodpowiadającą wartością portu z konfiguracji MySQL plik (np. 3306).
                          1. Spowoduje to tymczasowe skonfigurowanie zapory. Jeśli używasz serwera Linux opartego na Debianie lub Ubuntu, wprowadź tę zmianę na stałe, wpisując sudo netfilter-persistent savei sudo netfilter-persistent reloadw terminalu lub SSH okno.
                          2. 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:

                            1. Kliknij prawym przyciskiem myszy menu Start i wybierz Uruchom.
                              1. W polu Uruchomwpisz wf.msci wybierz OK.
                                1. W oknie Windows Defenderwybierz Reguły ruchu przychodzącego >Nowa reguła.
                                  1. W Kreatorze nowej reguły ruchu przychodzącegowybierz Port>Dalej.
                                    1. W następnym menu wybierz TCPz opcji, wpisz 3306(lub dowolną wartość portu wymienioną w pliku konfiguracyjnym MySQL), a następnie wybierz Dalej.
                                      1. W menu Działaniepozostaw domyślną opcję >Zezwól na połączeniewłączone, a następnie wybierz Dalej.
                                        1. Potwierdź, że chcesz, aby reguła była stosowana do wszystkich typów sieci, a następnie wybierz Dalej.
                                          1. Wpisz opisową nazwę reguły (np. MySQL) w podanym porcie , a następnie wybierz Zakończ, aby dodać go do listy reguł zapory.
                                          2. 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

                                            1. Aby połączyć się ze zdalnym serwerem MySQL na komputerze Mac lub Linux, otwórz nowe okno terminala i wpisz mysql -u nazwa użytkownika -h XXXX:XXXX -p. Zastąp XXXX:XXXXadresem IP zdalnego serwera i numerem portu (np. 100.200.100.200:3306), a nazwa użytkownikaswoją nazwą użytkownika MySQL.
                                              1. Po wyświetleniu monitu potwierdź hasło. Jeśli połączenie się powiedzie, w terminalu pojawi się komunikat o powodzeniu.
                                              2. Łączenie z MySQL w systemie Windows

                                                1. Aby się połączyć do zdalnego serwera MySQL w systemie Windows, otwórz nowe okno PowerShell, klikając prawym przyciskiem myszy menu Start i wybierając Windows PowerShell (administrator).
                                                  1. W nowym oknie PowerShell wpisz cd „C:\Program Files\MySQL\MySQL Workbench 8.0\”, aby wejść do właściwego folderu, zastępując ten katalog z prawidłowym katalogiem instalacyjnym na twoim komputerze. Na przykład, jeśli twoja wersja MySQL to 8.0.1, użyj zamiast tego folderu MySQL Workbench 8.0.1.
                                                    1. W tym miejscu wpisz .\mysql.exe -u nazwa użytkownika -h X.X.X.X:XXXX -p. Zastąp XXXX:XXXXadresem IP zdalnego serwera i numerem portu (np. 100.200.100.200:3306), a nazwa użytkownikanazwą użytkownika MySQL, która umożliwia zdalny dostęp (np. root). Postępuj zgodnie z dodatkowymi instrukcjami wyświetlanymi na ekranie.
                                                    2. Podaj hasło, gdy zostaniesz o to poproszony, aby zakończyć proces logowania i uzyskać zdalny dostęp do bazy danych MySQL.
                                                    3. 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.

                                                      1. W zdalnej powłoce MySQL (używając narzędzia mysql) wpisz CREATE USER „nazwa użytkownika”@”xxxx” IDENTIFIED BY „password”;i wybierz Enter. Zastąp nazwa użytkownikanazwą użytkownika, którą chcesz utworzyć, xxxxadresem IP, z którego chcesz się połączyć, a hasłoodpowiednim hasłem.
                                                        1. Należy nadać nowemu kontu niezbędne uprawnienia. Aby to zrobić, wpisz GRANT ALL ON nazwa bazy danych.* TO nazwa_użytkownika@”x.x.x.x”;i zastąp nazwę bazy danych, nazwę użytkownikai x.x.x.x poprawnymi danymi. Jeśli chcesz, zamień nazwa bazy danychna *, aby przyznać jej dostęp do wszystkich baz danych.
                                                        2. 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.

                                                          Powiązane posty:


                                                          9.08.2021