MySQL - Przewodnik na start
MySQL to najpopularniejsza na świecie relacyjna baza danych typu open source, wykorzystywana przez miliony aplikacji – od niewielkich stron internetowych po rozbudowane systemy klasy enterprise. Serwer jest dostarczany z w pełni skonfigurowanym MySQL 8.4 LTS oraz hasłem użytkownika root, które zostało podane podczas składania zamówienia. W zestawie znajduje się również phpMyAdmin, umożliwiający zarządzanie bazami danych z poziomu przeglądarki.
Krok 1 – Sprawdzenie działania MySQL
Adres IP serwera oraz hasło użytkownika root znajdziesz w sekcji Server Information na karcie Overview w panelu klienta. phpMyAdmin jest dostępny natychmiast po utworzeniu serwera. Otwórz w przeglądarce adres http://your.server.ip/phpmyadmin, aby sprawdzić poprawność działania.
Dane logowania do phpMyAdmin:
- Użytkownik: root
- Hasło: hasło użytkownika root podane podczas składania zamówienia
Za pomocą phpMyAdmin możesz tworzyć bazy danych, wykonywać zapytania SQL, importować i eksportować dane oraz zarządzać użytkownikami bez korzystania z wiersza poleceń.
Serwery baz danych nie wymagają bezpośredniego dostępu z Internetu. Dla większego bezpieczeństwa umieść serwer w sieci prywatnej za routerem VyOS i łącz się z MySQL oraz phpMyAdmin przez VPN, wykorzystując prywatny adres IP serwera.
Krok 2 – Zdalne połączenie z MySQL
MySQL jest skonfigurowany do akceptowania połączeń zdalnych. Możesz połączyć się z dowolnej aplikacji lub narzędzia:
mysql -h your.server.ip -u root -pParametry połączenia dla narzędzi graficznych (MySQL Workbench, DBeaver, HeidiSQL itp.):
| Parametr | Wartość |
|---|---|
| Host | your.server.ip |
| Port | 3306 |
| Użytkownik | root |
| Hasło | Hasło użytkownika root podane podczas składania zamówienia |
Uwaga: Port 3306 obsługuje protokół MySQL, a nie HTTP, dlatego nie można otworzyć go w przeglądarce. Do połączenia użyj klienta bazy danych lub powyższego polecenia.
Krok 3 – Włączenie SSL dla phpMyAdmin (Opcjonalnie)
Jeżeli Twoja domena wskazuje na ten serwer, możesz włączyć HTTPS dla phpMyAdmin za pomocą bezpłatnego certyfikatu Let’s Encrypt. Połącz się przez SSH i uruchom:
ssh root@your.server.ip /opt/setup/get-ssl.sh db.yourdomain.comSkrypt automatycznie zweryfikuje konfigurację DNS, pobierze certyfikat oraz skonfiguruje Apache. Po zakończeniu phpMyAdmin będzie dostępny pod adresem https://db.yourdomain.com/phpmyadmin.
Uwaga: Przed uruchomieniem skryptu upewnij się, że rekord A domeny wskazuje na adres IP serwera. Certyfikat SSL jest opcjonalny – phpMyAdmin działa również przez HTTP przy użyciu adresu IP.
Zarządzanie bazami danych
Tworzenie dodatkowych baz danych
Nowe bazy danych możesz tworzyć zarówno z poziomu phpMyAdmin, jak i przez SSH:
mysql -u root -p CREATE DATABASE newdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'newuser’@’%’ IDENTIFIED BY 'strong_password’; GRANT ALL PRIVILEGES ON newdb.* TO 'newuser’@’%’; FLUSH PRIVILEGES;Import i eksport danych
Za pomocą phpMyAdmin: Skorzystaj z zakładek Import oraz Eksport. Obsługiwane są między innymi formaty SQL i CSV. Maksymalny rozmiar przesyłanego pliku wynosi 64 MB.
Z poziomu wiersza poleceń:
# Eksport mysqldump -u root -p your_database > backup.sql # Import mysql -u root -p your_database < backup.sqlW przypadku dużych baz danych (powyżej 64 MB) zaleca się korzystanie z wiersza poleceń zamiast phpMyAdmin.
Po instalacji
Fail2Ban – Ochrona przed atakami brute-force
Na serwerze jest już skonfigurowany Fail2Ban, który chroni zarówno usługę SSH, jak i phpMyAdmin przed atakami polegającymi na wielokrotnym odgadywaniu haseł.
| Reguła | Maksymalna liczba prób | Czas blokady |
|---|---|---|
| SSH | 5 nieudanych logowań | 10 minut |
| phpMyAdmin | 5 nieudanych logowań | 1 godzina |
Przydatne polecenia:
# Wyświetlenie zablokowanych adresów IP fail2ban-client status phpmyadmin fail2ban-client status sshd # Odblokowanie adresu IP fail2ban-client set phpmyadmin unbanip 1.2.3.4Jeżeli przypadkowo zablokujesz własny adres IP, połącz się z serwerem przez konsolę VNC dostępną w panelu klienta i odblokuj swój adres.
Zarządzanie usługami
MySQL oraz usługi serwera WWW działają jako usługi systemd. Najczęściej używane polecenia:
# Sprawdzenie stanu usług systemctl status mysql systemctl status apache2 # Restart MySQL systemctl restart mysql # Wyświetlenie logów MySQL journalctl -u mysql -n 100Optymalizacja wydajności MySQL
Pamięć InnoDB Buffer Pool jest automatycznie ustawiana podczas pierwszego uruchomienia na 50% dostępnej pamięci RAM. Aby sprawdzić bieżącą wartość:
mysql -u root -p -e „SHOW VARIABLES LIKE 'innodb_buffer_pool_size’;”Aby zmienić ustawienia ręcznie, edytuj plik /etc/mysql/mysql.conf.d/99-tuning.cnf, a następnie uruchom ponownie usługę MySQL:
systemctl restart mysqlDane dostępowe do serwera
Hasło użytkownika root dla MySQL jest zapisane w pliku /root/.mysql_credentials.
Wstępna konfiguracja
- Dostęp zdalny: MySQL akceptuje połączenia z dowolnego adresu IP na porcie 3306.
- InnoDB Buffer Pool: Automatycznie ustawiony na 50% dostępnej pamięci RAM podczas pierwszego uruchomienia.
- Performance Schema: Wyłączony na serwerach z mniej niż 2 GB pamięci RAM w celu ograniczenia zużycia zasobów.
- Limity PHP: Maksymalny rozmiar pliku importowanego przez phpMyAdmin wynosi 64 MB.
Zainstalowane oprogramowanie
| Komponent | Wersja |
|---|---|
| Ubuntu | 24.04 LTS |
| MySQL | 8.4 LTS (Oracle APT) |
| Apache | 2.4 |
| PHP | 8.3 |
| phpMyAdmin | 5.2 |
| Certbot | Najnowsza wersja |
| Fail2Ban | 1.0 |
Rozwiązywanie problemów
| Problem | Rozwiązanie |
|---|---|
| Brak możliwości zdalnego połączenia z MySQL | Sprawdź, czy port 3306 nie jest blokowany przez zaporę sieciową. Upewnij się również, że użytkownik ma przypisanego hosta '%’, a nie tylko 'localhost’. |
| Błąd logowania do phpMyAdmin | Sprawdź poprawność hasła użytkownika MySQL. Dane użytkownika root znajdują się w pliku /root/.mysql_credentials. |
| Import w phpMyAdmin kończy się błędem (zbyt duży plik) | Maksymalny rozmiar przesyłanego pliku wynosi 64 MB. Większe kopie zapasowe importuj przez SSH za pomocą polecenia mysql -u root -p dbname < file.sql. |
| MySQL nie uruchamia się | Sprawdź logi: journalctl -u mysql -n 50. Najczęstszą przyczyną jest brak wolnego miejsca na dysku. Zweryfikuj to poleceniem df -h /. |
| Nie pamiętasz hasła użytkownika root | Połącz się z serwerem przez SSH i sprawdź zawartość pliku /root/.mysql_credentials. |
| Adres IP został zablokowany przez Fail2Ban | Połącz się z serwerem przez konsolę VNC dostępną w panelu klienta i odblokuj swój adres IP. |
| Nie pamiętasz hasła użytkownika root systemu | Skorzystaj z konsoli VNC dostępnej w panelu klienta, aby zresetować hasło. |