Jak zainstalować i skonfigurować serwer MySQL na Ubuntu Server 24.04 LTS ?
MySQL to jeden z najpopularniejszych systemów zarządzania relacyjnymi bazami danych (RDBMS) na świecie. Jest to rozwiązanie open-source, które doskonale sprawdza się zarówno w małych projektach, jak i dużych aplikacjach korporacyjnych. W tym artykule przeprowadzę Cię przez proces instalacji i konfiguracji serwera MySQL na Ubuntu Server 24.04 LTS.
Krok 1: Aktualizacja systemu
Zacznij od zaktualizowania listy pakietów i systemu:
sudo apt update
sudo apt upgrade
Krok 2: Instalacja serwera MySQL
Zainstaluj serwer MySQL za pomocą menedżera pakietów APT:
sudo apt install mysql-server
Po zakończeniu instalacji usługa MySQL powinna uruchomić się automatycznie. Możesz sprawdzić status usługi:
sudo systemctl status mysql
Jeśli usługa nie jest uruchomiona, włącz ją:
sudo systemctl start mysql
sudo systemctl enable mysql
Krok 3: Zabezpieczenie instalacji MySQL
MySQL dostarcza skrypt zabezpieczający, który pomoże Ci wzmocnić bezpieczeństwo instalacji. Uruchom:
sudo mysql_secure_installation
Skrypt przeprowadzi Cię przez kilka kroków:
- VALIDATE PASSWORD COMPONENT – możesz włączyć komponent walidacji haseł, który wymusza silne hasła
- Ustawienie hasła root – ustaw silne hasło dla użytkownika root
- Usunięcie anonimowych użytkowników – zalecane: TAK
- Wyłączenie zdalnego logowania root – zalecane: TAK
- Usunięcie testowej bazy danych – zalecane: TAK
- Przeładowanie tablic uprawnień – zalecane: TAK
Krok 4: Logowanie do MySQL
Zaloguj się do konsoli MySQL jako użytkownik root:
sudo mysql -u root
Uwaga: Hasło nie jest wymagane, ponieważ MySQL domyślnie uwierzytelnia użytkownika root za pomocą wtyczki auth_socket.
Krok 5: Podstawowa konfiguracja
Tworzenie nowego użytkownika
Dla bezpieczeństwa zaleca się tworzenie dedykowanych użytkowników zamiast używania konta root:
CREATE USER 'nazwa_uzytkownika'@'localhost' IDENTIFIED BY 'silne_haslo';
Przykłady konfiguracji dostępu dla użytkowników
1. Dostęp tylko lokalny:
CREATE USER 'jan'@'localhost' IDENTIFIED BY 'silne_haslo';
Użytkownik jan może się łączyć tylko z tego samego serwera.
2. Dostęp z konkretnego IP:
CREATE USER 'jan'@'192.168.1.50' IDENTIFIED BY 'silne_haslo';
Użytkownik jan może się łączyć tylko z komputera o IP 192.168.1.50.
3. Dostęp z całej podsieci (wildcard %):
CREATE USER 'jan'@'192.168.1.%' IDENTIFIED BY 'silne_haslo';
Użytkownik jan może się łączyć z dowolnego komputera w podsieci 192.168.1.x
Czyli z adresów: 192.168.1.1, 192.168.1.2, 192.168.1.100, itd.
4. Dostęp z dowolnego miejsca (niezalecane!):
CREATE USER 'jan'@'%' IDENTIFIED BY 'silne_haslo';
Użytkownik jan może się łączyć z dowolnego miejsca w internecie.
Bardzo niebezpieczne!
Tworzenie bazy danych
CREATE DATABASE nazwa_bazy;
Nadawanie uprawnień
Uprawnienia na poziomie bazy danych
Nadaj użytkownikowi uprawnienia do konkretnej bazy danych:
GRANT ALL PRIVILEGES ON nazwa_bazy.* TO 'nazwa_uzytkownika'@'localhost';
Lub dla połączeń zdalnych:
GRANT ALL PRIVILEGES ON nazwa_bazy.* TO 'nazwa_uzytkownika'@'x.x.x.%';
Uprawnienia globalne (dla backupów i administracji)
Dla użytkowników wykonujących backupy lub zadania administracyjne, nadaj uprawnienia globalne:
-- Minimalne uprawnienia do backupu
GRANT SELECT, LOCK TABLES, SHOW VIEW, PROCESS ON *.* TO 'nazwa_uzytkownika'@'localhost';
-- Rozszerzone uprawnienia do backupu (zalecane)
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER, PROCESS, RELOAD ON *.* TO 'nazwa_uzytkownika'@'localhost';
-- Pełne uprawnienia administracyjne
GRANT ALL PRIVILEGES ON *.* TO 'nazwa_uzytkownika'@'localhost' WITH GRANT OPTION;
Przeładowanie uprawnień
Po nadaniu uprawnień, przeładuj je:
FLUSH PRIVILEGES;
Sprawdzanie uprawnień
Sprawdź nadane uprawnienia dla użytkownika:
SHOW GRANTS FOR 'nazwa_uzytkownika'@'localhost';
Różnica między nazwa_bazy.* a *.*
nazwa_bazy.*– uprawnienia tylko do konkretnej bazy (NIE zawiera PROCESS, RELOAD)*.*– uprawnienia globalne do wszystkich baz (zawiera uprawnienia systemowe)
Sprawdzenie użytkowników
SELECT user, host, plugin FROM mysql.user;
Wyjdź z konsoli MySQL:
EXIT;
Krok 6: Konfiguracja pliku mysqld.cnf
Główny plik konfiguracyjny MySQL znajduje się w:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Ważne parametry konfiguracyjne
Adres nasłuchiwania:
bind-address = 127.0.0.1
Zmień na 0.0.0.0, jeśli chcesz zezwolić na zdalne połączenia.
Port:
port = 3306
Po wprowadzeniu zmian zrestartuj MySQL:
sudo systemctl restart mysql
Krok 7: Konfiguracja zapory sieciowej (opcjonalnie)
Ubuntu 24.04 LTS jest dostarczane z preinstalowanym UFW (Uncomplicated Firewall) – przyjaznym interfejsem do zarządzania iptables lub nftables. Chociaż UFW jest zainstalowane, domyślnie jest wyłączone. Użytkownicy muszą ręcznie je włączyć, aby chronić swój system.
Sprawdzenie statusu
sudo ufw status
Włączanie zapory
Ważne: Jeśli korzystasz z SSH, przed włączeniem zapory upewnij się, że zezwoliłeś na połączenia SSH, aby nie zablokować sobie dostępu:
sudo ufw allow ssh
Następnie włącz zaporę:
sudo ufw enable
Dodanie portu MySQL
Jeśli chcesz zezwolić na zdalne połączenia z MySQL:
sudo ufw allow 3306/tcp
sudo ufw reload
Uwaga: Otwieranie portu MySQL dla całego internetu nie jest zalecane. Lepiej ograniczyć dostęp do konkretnych adresów IP:
sudo ufw allow from adres_ip to any port 3306
Krok 8: Testowanie połączenia
Sprawdź, czy MySQL nasłuchuje na odpowiednim porcie:
sudo ss -plunt | grep mysqld
Podsumowanie
Gratulacje! Pomyślnie zainstalowałeś i skonfigurowałeś serwer MySQL na Ubuntu Server 24.04 LTS. Twoja instalacja jest teraz zabezpieczona i gotowa do użycia. Pamiętaj o regularnym tworzeniu kopii zapasowych baz danych oraz aktualizowaniu systemu i MySQL do najnowszych wersji.