Przewodnik zakłada, że masz serwer odłożony do użytku MySQL z dostępnym statycznym adresem IP, być może w chmurze lub gdzieś w sieci lokalnej. Następujące polecenia, w tym podsekcji, należy wykonywać na powładzie serwera. Szybko zainstaluj i skonfigurujmy MySQL na Ubuntu.
Aktualizacja $ sudo aptOstatnie polecenie uruchomi skrypt, aby zmienić niektóre niepewne wartości domyślne MySQL. Najpierw byłby monit o zainstalowanie wtyczki sprawdzania poprawności hasła. To sprawdziłoby, czy nowe hasło, które ustawiasz dla użytkowników, jest wystarczająco silne, czy nie. Jeśli chcesz, możesz zrezygnować z tej wtyczki. Następnie zostaniesz poproszony o ustawienie hasła użytkownika MySQL root. Śmiało i ustaw silne hasło użytkownika root.
Naciśnij y | y dla tak, każdy inny klucz dla nie: nPo tym możesz prawie powiedzieć Tak Do każdego innego wiersza w tym skrypcie, ponieważ skrypt usuwa użytkownika testowego, usuwa testową bazę danych, wyłącza zdalne logowanie root i ostatecznie ponownie załaduje tabelę uprawnień. Po zrobieniu tego, ponieważ niedozwolono zdalnego logowania root, utwórzmy bazę danych i nowy użytkownik, który może uzyskać dostęp do tej bazy danych bez faktycznego SSH (lub logowania) do SSH Server Unix/Linux Shell. Ale zanim to zrobimy, sprawdźmy, czy nasza kompilacja MySQL ma wbudowane TLS, czy nie.
Sprawdzanie, czy TLS jest dostępny
TLS jest dostępny w MySQL. Nie ma modułu dynamicznego do załadowania. Więc jeśli nie masz pewności, że twój pakiet MySQL ma zainstalowany TLS, czy nie, możesz to sprawdzić, uruchamiając:
$ sudo mysqlJeśli mówi, że zmienne have_openssl I have_ssl mieć ustawione wartości WYŁĄCZONY Wtedy masz SSL i jesteś gotowy (musisz tylko go włączyć, czytając dalej). Jeśli wartości są ustawione na NIE, Następnie musisz uzyskać inną wersję mysql od menedżera pakietów lub gdzie indziej.
mysql> wyjścieKonfigurowanie MySQL
Domyślnie serwer MySQL słucha tylko na interfejsie Loopback, to znaczy na adresie „LocalHost” lub „127.0.0.1 ', w przypadku zdalnych połączeń chcemy również słuchać publicznego statycznego adresu IP. Aby to otworzyć plik, /etc/mysql/my.CNF i dołącz kolejne kilka wierszy na samym końcu.
…Tutaj wymieniasz z faktycznym adresem IP twojego serwera. Jeśli masz wątpliwości, którego IP użyć, możesz użyć 0.0.0.0 Aby słuchać wszystkich interfejsów. Teraz uruchom ponownie serwer, aby miała miejsce nowa konfiguracja.
$ sudo service mysql restartTworzenie zdalnego użytkownika
Uwaga: Jeśli chcesz korzystać z bazy danych w produkcji, są szanse, że klient, który połączy się z tą bazą danych - Twój front - będzie miał statyczny adres IP. W takim przypadku wymień procent „%” symbolem odpowiednim klientem IP klienta. „%” to tylko dzika karta, co oznacza „dowolną wartość”. Będziemy konfigurować nasze Myuser aby mógł się zalogować z dowolnego adresu IP (na przykład zmieniającego się adresu IP twojego krajowego połączenia szerokopasmowego), który jest prawdopodobnie niepewny.
$ sudo mysqlZastępować 'hasło' z faktycznym silnym hasłem i mamy nazwisko użytkownika Myuser który ma pełny dostęp do bazy danych myDatabaza.
Włączanie TLS (znane również jako „SSL”)
Podczas gdy jesteś zalogowany do powłoki MySQL jako użytkownik root MySQL, możesz sprawdzić status połączenia, wpisując \ s:
mysql> \ sZwróć uwagę na wyróżnione wiersze dotyczące połączenia i SSL. Podczas gdy ten stan jest w porządku dla lokalnego logowania użytkownika root, zanim zalogujemy się przez TLS Myuser Typ połączenia będzie ponad TCP/IP, a nie surowe gniazdo, a szyfr SSL będzie używany. Istnieje proste polecenie, aby to osiągnąć. Ale najpierw wyjdźmy z naszego myszy MySQL.
mysql> wyjścieTeraz biegnij,
$ sudo mysql_ssl_rsa_setup --uid = mysql
Po zakończeniu możesz spojrzeć na zmienna Have_SSL Ponownie.
Logowanie z oddzielnego klienta MySQL
Istnieją nowe parametry wskazujące, że certyfikat TLS i klucz są na miejscu, a TLS jest włączony. Teraz możesz wylogować się z tego komputera, otworzyć klienta MySQL na swoim komputerze lokalnym, jeśli go nie masz (i używasz Debian lub Ubuntu), aby uzyskać klienta MySQL Shell:
$ sudo apt Zainstaluj mysql-clientZastąp Myuser I Za pomocą faktycznej nazwy użytkownika i IP serwera wprowadź wybrane hasło i należy zalogować się do bazy danych. Sprawdź połączenie:
mysql> \ sMożesz zobaczyć, że teraz używa RSA do szyfrowania ruchu, a połączenie jest z określonym adresem IP przez TCP/IP. Teraz twoje połączenie z tą bazą danych MySQL jest bezpieczne.
To najprostszy sposób na zabezpieczenie zdalnych połączeń MySQL z TLS. Pamiętaj, że to nie to samo, co zabezpieczenie klienta phpMyAdmin nad TLS. To jest połączone TLS i HTTP i wymaga zabezpieczenia interfejsu internetowego. Związek między phpMyAdmin, który renderuje Twój interfejs internetowy, a bazą danych może być niezaszyfrowana, co jest w porządku, o ile są na tym samym serwerze.
Możesz dowiedzieć się więcej o połączeniu TLS, leżącym u podstaw CAS, certyfikatów i kluczowych zarządzania w oficjalnych dokumentach MySQL.