07 maj

Jak zainstalować MySQL na Ubuntu 20.04

Konfiguracja MySQL w Ubuntu 20

MySQL jest otwarto-źródłowym (open-source) systemem zarządzania bazą danych, powszechnie instalowanym jako część popularnego zestawu LAMP (Linux, Apache, MySQL, PHP / Python / Perl). Implementuje on model relacyjny, a do zarządzania swoimi danymi wykorzystuje Structured Query Language (znanego lepiej jako SQL).

W tym artykule wyjaśnimy, jak zainstalować MySQL w wersji 8 na serwerze Ubuntu 20.04.

Aby przejść przez ten poradnik, będziesz potrzebował:

Instalacja MySQL

Aby zainstalować MySQL, zaktualizuj najpierw indeks pakietu serwera, jeśli nie robiłeś tego ostatnio:

sudo apt update

Następnie zainstaluj pakiet mysql-server:

sudo apt install mysql-server

Konfiguracja MySQL

Uruchom (z sudo) dołączony skrypt bezpieczeństwa MySQL:

sudo mysql_secure_installation

Spowoduje to przejście przez serię monitów, w których możesz wprowadzić zmiany w opcjach bezpieczeństwa instalacji MySQL. W pierwszym monicie pojawi się pytanie, czy chcesz skonfigurować wtyczkę Validate Password, której można użyć do przetestowania siły hasła MySQL.

Jeśli zdecydujesz się skonfigurować wtyczkę Validate Password, skrypt poprosi cię o wybranie poziomu sprawdzania hasła (przy czym najsłabszym jest 0, a najsilniejszym 2):

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG:
 2

Następnym pytaniem będzie wprowadzenie i potwierdzenie hasła dla użytkownika root MySQL:

Please set the password for root here.

New password: 

Re-enter new password: 

Skrypt zapyta wtedy, czy chcesz kontynuować z wprowadzonym hasłem, czy chcesz wprowadzić nowe. Jeśli hasło jest zadowalające, wpisz Y, aby kontynuować działanie skryptu:

Estimated strength of the password: 100 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y

Od tego momentu możesz naciskać Y, a następnie ENTER, aby zaakceptować wartości domyślne dla wszystkich kolejnych pytań.

Dostosowywanie uwierzytelnienia i uprawnień użytkownika (opcjonalnie)

Aby użyć hasła do połączenia się z MySQL jako root, musisz zmienić jego metodę uwierzytelniania z domyślnej wtyczki uwierzytelniającej auth_socket na inną, taką jak caching_sha2_password lub mysql_native_password. Aby to zrobić, otwórz okno MySQL w swoim terminalu:

sudo mysql

Następnie uruchom instrukcję ALTER USER, aby zmienić używaną wtyczkę uwierzytelniającą i ustawić nowe hasło. Zmień hasło na wybrane przez siebie silne hasło i pamiętaj, że to polecenie zmieni hasło root ustawione w kroku 2:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'haslo';

Uwaga: caching_sha2_password jest preferowaną wtyczką uwierzytelniającą MySQL, ponieważ zapewnia bezpieczniejsze szyfrowanie haseł niż starsza (ale wciąż powszechnie używane) wtyczka mysql_native_password.

Jednak wiele aplikacji PHP – na przykład phpMyAdmin – nie działa niezawodnie z caching_sha2_password. Jeśli planujesz używać tej bazy danych z aplikacją PHP, dla użytkownika root możesz ustawić uwierzytelnianie za pomocą mysql_native_password:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Następnie uruchom instrukcję FLUSH PRIVILEGES, która nakazuje serwerowi ponowne załadowanie tabel uprawnień i wprowadzenie nowych zmian w życie:

FLUSH PRIVILEGES;

Sprawdź ponownie metody uwierzytelniania stosowane przez każdego z użytkowników, aby potwierdzić, że root nie uwierzytelnia się już przy użyciu wtyczki auth_socket:

SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| debian-sys-maint | $A$005$lS|M#3K #XslZ.dXUq.lkEqTjMvhgOIX7B/jgh5DeLA3JB9nh0KwENtwQ4 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$KOMBINACJAHASLAZSZYFREMKTORENIEWYKORZYSTUJESIE | caching_sha2_password | localhost |
| mysql.session    | $A$005$KOMBINACJAHASLAZSZYFREMKTORENIEWYKORZYSTUJESIE | caching_sha2_password | localhost |
| mysql.sys        | $A$005$KOMBINACJAHASLAZSZYFREMKTORENIEWYKORZYSTUJESIE | caching_sha2_password | localhost |
| root             | *7564DAVC9151D997782ADD0839F92C1571D6D78F                              | caching_sha2_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)

Po potwierdzeniu tego na swoim serwerze, możesz wyjść z powłoki MySQL:

exit

Alternatywnie, możesz połączyć się z MySQL, używając do tego dedykowanego użytkownika zamiast użytkownika root. Aby utworzyć takiego użytkownika, ponownie otwórz powłokę MySQL:

sudo mysql

Uwaga: Jeśli włączono uwierzytelnianie za pomocą hasła dla użytkownika root – jak opisano w poprzednich akapitach – należy zamiast tego uruchomić następujące polecenie:

mysql -u root -p

Następnie stwórz nowego użytkownika i nadaj mu silne hasło:

CREATE USER 'adam'@'localhost' IDENTIFIED BY 'haslo';

Następnie nadaj nowemu użytkownikowi odpowiednie uprawnienia. Możesz na przykład nadać użytkownikowi uprawnienia do wszystkich tabel w bazie danych, a także uprawnienia do dodawania, zmieniania i usuwania danych za pomocą tego polecenia:

GRANT ALL PRIVILEGES ON *.* TO 'adam'@'localhost' WITH GRANT OPTION;

Następnie możesz wyjść z powłoki MySQL:

exit

Podsumowanie

Masz teraz na swoim serwerze podstawową konfigurację MySQL. Oto kilka przykładów kolejnych kroków, które możesz podjąć: