Serwer MySQL na Debian 12: instalacja, zabezpieczenia i naprawa problemów

ByTomasz Sanecki

Serwer MySQL na Debian 12: instalacja, zabezpieczenia i naprawa problemów

MySQL to jedna z najpopularniejszych baz danych, używana przez miliony aplikacji webowych na całym świecie. Jeśli chcesz zainstalować MySQL na swoim serwerze z systemem Debian 12, trafiłeś we właściwe miejsce.

MySQL to otwartoźródłowy system zarządzania relacyjnymi bazami danych (RDBMS), który oferuje szybkość, niezawodność i prostotę obsługi. Debian 12 to stabilna i niezawodna dystrybucja Linuksa, szeroko stosowana na serwerach. Dzięki długoterminowemu wsparciu i otwartoźródłowemu charakterowi, Debian jest doskonałym wyborem dla aplikacji serwerowych, takich jak MySQL.

Instalacja i konfiguracja MySQL na Debianie 12 to proces, który można przeprowadzić w kilku krokach. Dzięki stabilności i niezawodności zarówno MySQL, jak i Debiana, możesz być pewien, że Twoje aplikacje będą działały wydajnie i bezpiecznie.

Podczas wykonywania tego skryptu będziesz proszony o ustawienie hasła dla użytkownika root oraz o kilka innych decyzji dotyczących bezpieczeństwa.

Wymagania wstępne i przygotowanie serwera

Zanim zaczniesz, upewnij się, że Twój serwer Linux spełnia podstawowe wymagania i że masz odpowiedni dostęp.

  • Uprawnienia root lub sudo na serwerze.
  • Obsługiwane dystrybucje: Ubuntu 20.04/22.04/24.04; Debian 11/12; RHEL/CentOS 7/8/9; Rocky/AlmaLinux 8/9.
  • Dostęp sieciowy do repozytoriów pakietów i portu 3306 (jeśli będą się łączyć klienci zdalni).
  • Co najmniej 1 GB RAM do małych obciążeń; w środowisku produkcyjnym zalecane 2 GB+.
  • Dokładny czas serwera (NTP) pozwalający uniknąć problemów z replikacją/TLS.

Wybierz dobrze MySQL Wydanie i repozytorium. Większość repozytoriów Linuksa zapewnia: MySQL lub MariaDB. Aby uzyskać najnowsze informacje MySQL 8 funkcji, rozważ oficjalne MySQL Repozytorium. Jeśli preferowana jest stabilność integracji z dystrybucją, należy użyć domyślnych repozytoriów.

MariaDB (szybkie wywołanie) oraz MySQL 8.0: Silny JSON, funkcje okna, role, domyślne uwieruchamianie caching_sha2_password, zorientowane na InnoDB.

Wskazówka: Dopasuj swój wybór do wymagań aplikacji.

sudo systemctl status mysql --no-pager

Instalacja MySQL na Debianie 12 (kroki)

Instalację na serwerze Linux jest prosta, jeśli wykonasz odpowiednie kroki. W tym przewodniku dowiesz się, jak zainstalować MySQL w dystrybucjach opartych na Ubuntu/Debianie i RHEL, zabezpiecz je do celów produkcyjnych, włączyć zdalny dostęp, dostosuj podstawową wydajność i sprawdź, czy wszystko działa - używając poleceń, które możesz bezpiecznie skopiować i uruchomić.

Ten samouczek przedstawia praktyczne, praktyczne praktyki stosowane na serwerach klienckich. W Ubuntu/Debian użyj apt.

Uruchom polecenie sudo apt update, a następnie sudo apt install -y mysql-server. Włącz i uruchom usługę poleceniem sudo systemctl enable -now mysql. Na koniec zabezpiecz ją poleceniem sudo mysql_secure_installation.

Instalacja na serwerze Linux jest prosta, jeśli wykonasz odpowiednie kroki. W tym przewodniku dowiesz się, jak zainstalować MySQL w dystrybucjach opartych na Ubuntu/Debianie i RHEL, zabezpiecz je do celów produkcyjnych, włączyć zdalny dostęp, dostosuj podstawową wydajność i sprawdź, czy wszystko działa - używając poleceń, które możesz bezpiecznie skopiować i uruchomić.

W zależności od dystrybucji, MySQL Użytkownik root może uwierzytelnić się przez gniazdo (bez hasła) lub za pomocą hasła. sudo mysql_secure_installation

Krok 1: Ustawienie hasła dla użytkownika root

Podczas instalacji i konfiguracji mogłeś już ustawić hasło dla użytkownika root.

Krok 1: Ustawienie hasła dla root. Podczas instalacji i konfiguracji mogłeś już ustawić hasło dla użytkownika root.

Krok 2: Ograniczenie zdalnych połączeń

Zdalne połączenia do serwera MySQL mogą stanowić zagrożenie, jeśli nie są odpowiednio zabezpieczone.

Włącz dostęp zdalny (opcjonalnie) - zezwalaj na zdalny dostęp tylko wtedy, gdy jest to konieczne i ograniczaj go według adresu IP. sudo firewall-cmd --reload

Użyj listy dozwolonych adresów IP zamiast otwierać adres 3306 dla całego świata.

Uruchomienie usługi i wstępna weryfikacja

W zależności od dystrybucji, MySQL Użytkownik root może uwierzytelnić się przez gniazdo (bez hasła) lub za pomocą hasła. sudo systemctl enable --now mysqlZastąp wersję pakietu konfiguracyjnego APT najnowszą z dev.mysql.com. Następnie uruchom bezpieczną instalację, jak pokazano wcześniej.

Zastąp wersję pakietu konfiguracyjnego APT najnowszą z dev.mysql.com. Następnie uruchom bezpieczną instalację, jak pokazano wcześniej.

W zależności od dystrybucji, MySQL Użytkownik root może uwierzytelnić się przez gniazdo (bez hasła) lub za pomocą hasła. sudo systemctl enable --now mysql

W zależności od dystrybucji, MySQL może wygenerować tymczasowe hasło roota w dzienniku.

Rejestry i typowe problemy - Pliki dziennika: /var/log/mysql/error.log (Ubuntu/Debian), /var/log/mysqld.log (podobny do RHEL).

Rejestry i typowe problemy - Port w użyciu: Upewnij się, że żadna inna usługa nie jest powiązana z portem 3306 (użyj polecenia ss -lntp | grep 3306).

schemat instalacji MySQL Debian 12

Bezpieczeństwo: mysql_secure_installation i najlepsze praktyki

Uruchom mysql_secure_installation, aby zwiększyć bezpieczeństwo, oraz utwórz bazę danych i użytkownika.

Uruchom mysql_secure_installation i ustaw silne, unikalne hasła.

Zabezpiecz MySQL dla Produkcji. Wyłącz zdalne logowanie do konta root; utwórz użytkowników administracyjnych ograniczonych przez adres IP.

Użyj protokołu TLS do połączeń klienckich (skonfiguruj ssl_cert, ssl_key, ssl_ca w mysqld).

Przyznaj najmniejsze uprawnienia; unikaj opcji GRANT ALL dla *.* dla użytkowników aplikacji.

Zmień dane uwierzytelniające i usuń nieużywane konta/bazy danych.

Włącz rejestrowanie wolnych zapytań i regularnie je sprawdzaj.

Konfiguracja początkowa i najlepsze praktyki. Uporządkowany start to tworzenie bazy danych i użytkownika o najmniejszych uprawnieniach.

Utwórz bazę danych i użytkownika o najmniejszych uprawnieniach. Użyj dedykowanego użytkownika dla każdej aplikacji z minimalnymi uprawnieniami.

EXIT;

Wtyczka uwierzytelniania i zgodność klientów

Rozważania dotyczące wtyczki uwierzytelniania. MySQL W wersji 8 domyślnie ustawione jest na caching_sha2_password. Niektóre starsze klienty obsługują tylko mysql_native_password.

FLUSH PRIVILEGES;

Jeśli aplikacja nie obsługuje domyślnego mechanizmu, typowym krokiem jest dopasowanie ustawień zgodnie z wymaganiami klienta. Wtyczkę i ustawienia hosta warto weryfikować w kontekście błędów logowania.

Tworzenie bazy i test działania

Utwórz bazę danych i użytkownika. Użyj dedykowanego użytkownika dla każdej aplikacji z minimalnymi uprawnieniami.

mysql -u root -p -e "SHOW DATABASES;"

Typowe problemy: usługa nie startuje na Debian 12

Witam wszystkich odwiedzających ten post,pod nie obecność administratora serwerów dziś nie może uruchomić się na Debian Server usługa mysql.

W tym momencie przy próbie uruchomienia serwera otrzymuję taki komunikat: Kod: Po wpisaniu komendy systemctl status mysql.service, otrzymuję komunikat: Kod: Natomiast w /var/log/mysql/error.log - mam następujący błąd teraz: Kod:

Jeśli przez przeglądarkę chcę zalogować się do aplikacji to pojawia się komunikat: Kod: Czy ktoś może pomóc ? Co mam zrobić ?

Wróci za 2 tygodnie, jest w Azji. Szukam alternatywy, że móc to naprawić jak się nie uda z nim skontaktować...

W takich sytuacjach kluczowe jest sprawdzenie dzienników i statusu usługi: Pliki dziennika: /var/log/mysql/error.log (Ubuntu/Debian), /var/log/mysqld.log (podobny do RHEL). Port w użyciu: Upewnij się, że żadna inna usługa nie jest powiązana z portem 3306 (użyj polecenia ss -lntp | grep 3306).

Jeśli błąd dotyczy autoryzacji, błędy uwierzytelniania: Sprawdź poprawność wtyczki, hosta (np. mysql -u root -p appdb < appdb_YYYY-MM-DD.sql.

Jeśli problem wynika z odzyskiwania danych z określonego punktu w czasie, należy wziąć pod uwagę MySQL Enterprise Backup lub Percona XtraBackup (kopie zapasowe fizyczne). Zawsze testuj przywracanie.

MySQL 9.3 on Debian 12 is HERE! Install & Configure it in 8 Minutes! | 2025 Updated

Port 3306, zdalny dostęp i ograniczanie powierzchni ataku

MySQL Używa portu TCP 3306. Możesz go zmienić, ale bezpieczeństwo powinno opierać się na silnym uwierzytelnianiu, TLS, zaporach sieciowych i liście dozwolonych adresów IP.

Jeśli zmienisz port, zaktualizuj odpowiednio zapory sieciowe, SELinux i ciągi połączeń aplikacji.

Dla produkcji: Twórz użytkownika aplikacji ograniczonego do adresu IP serwera aplikacji.

Otwórz port 3306 tylko dla tego adresu IP (UFW lub firewalld). Bind MySQL do 0.0.0.0 i wymuś protokół TLS dla ruchu produkcyjnego.

Monitoruj połączenia za pomocą performance_schema i logowania w dziennikach błędów.

Ustaw stały czas serwera (NTP), aby zapewnić dokładność dzienników i kopii zapasowych.

schemat zdalnego dostępu MySQL

Aktualizacje i poprawki w Debian 12

Aktualizacje i poprawki. Zaplanuj okna konserwacyjne na potrzeby drobnych aktualizacji wersji.

Przed zainstalowaniem aktualizacji wykonaj kopię zapasową.

Ubuntu/Debian: sudo apt update i sudo apt upgrade.

Podobnie jak w RHEL: sudo dnf update lub sudo yum update.

Przejrzyj notatki dotyczące wydania, aby zapoznać się ze zmianami dotyczącymi uwierzytelniania i replikacji.

MySQL i bezpieczeństwo: Uruchom mysql_secure_installation i ustaw silne, unikalne hasła.

MariaDB czy MySQL: wybór pod serwer Linux

Oba są solidne. Wybierz MySQL 8, aby korzystać z najnowszych funkcji obsługiwanych przez Oracle i szerokiej kompatybilności z ekosystemem. Wybierz MariaDB, jeśli preferujesz rozwój oparty na społeczności lub jest to domyślne ustawienie w Twojej dystrybucji.

Przed zmianą sprawdź obsługę sterowników przez swoją aplikację.

Jak włączyć połączenia zdalne MySQL

Edytuj MySQL. Skonfiguruj, aby nasłuchiwać na adresie 0.0.0.0 (adresie powiązania), dodaj użytkownika ograniczonego do adresu IP klienta i otwórz port 3306 na zaporze tylko dla tego adresu IP. Uruchom ponownie. MySQL i przetestuj poleceniem mysql -h DB_HOST -u USER -p.

Zawsze unikaj publicznego udostępniania 3306.

Jak całkowicie usunąć MySQL z Linuksa

W Ubuntu/Debianie: sudo apt purge -y mysql-server mysql-common; następnie sudo apt autoremove -y i usuń pozostałe dane w katalogu /var/lib/mysql (po wykonaniu kopii zapasowych).

W systemach podobnych do RHEL: sudo dnf remove -y mysql* i wyczyść wszelkie pozostałe pliki konfiguracyjne, a następnie usuń katalog /var/lib/mysql, jeśli to konieczne.

Jak zresetować utracone MySQL hasło roota

Stop MySQL, uruchom go za pomocą -skip-grant-tables, połącz się bez hasła, zaktualizuj roota hasło użytkownika, a następnie uruchom ponownie normalnie. Postępuj zgodnie z oficjalnymi instrukcjami MySQL 8 dokumentacji zawierającej dokładne instrukcje dotyczące Twojej dystrybucji. Upewnij się, że ograniczysz dostęp do serwera podczas tego procesu.

FAQ: najważniejsze pytania o MySQL na Linux

Jak zainstalować MySQL na Ubuntu?

Uruchom polecenie sudo apt update, a następnie sudo apt install -y mysql-server. Włącz i uruchom usługę poleceniem sudo systemctl enable -now mysql. Na koniec zabezpiecz ją poleceniem sudo mysql_secure_installation. Aby uzyskać najnowszą wersję, MySQL 8. Przed instalacją dodaj repozytorium APT firmy Oracle ze strony dev.mysql.com.

Jaką ma wartość domyślna? MySQL hasło roota w systemie Linux?

W systemach Ubuntu/Debian użytkownik root może uwierzytelniać się przez gniazdo (bez hasła) lub poprosić o jego ustawienie podczas instalacji mysql_secure_installation. W systemach typu RHEL korzystających z MySQL repo, tymczasowe hasło roota jest zapisywane w /var/log/mysqld.log po pierwszym uruchomieniu.

Jak włączyć połączenia zdalne MySQL?

Edytuj MySQL. Skonfiguruj, aby nasłuchiwać na adresie 0.0.0.0 (adresie powiązania), dodaj użytkownika ograniczonego do adresu IP klienta i otwórz port 3306 na zaporze tylko dla tego adresu IP. Uruchom ponownie. MySQL i przetestuj poleceniem mysql -h DB_HOST -u USER -p. Zawsze unikaj publicznego udostępniania 3306.

Is MySQL czy MariaDB jest lepsza dla serwerów Linux?

Oba są solidne. Wybierz MySQL 8, aby korzystać z najnowszych funkcji obsługiwanych przez Oracle i szerokiej kompatybilności z ekosystemem. Wybierz MariaDB, jeśli preferujesz rozwój oparty na społeczności lub jest to domyślne ustawienie w Twojej dystrybucji. Przed zmianą sprawdź obsługę sterowników przez swoją aplikację.

Jaki port obsługuje i czy powinienem to zmienić?

MySQL używać i czy powinienem to zmienić? MySQL Używa portu TCP 3306. Możesz go zmienić, ale bezpieczeństwo powinno opierać się na silnym uwierzytelnianiu, TLS, zaporach sieciowych i liście dozwolonych adresów IP. Jeśli zmienisz port, zaktualizuj odpowiednio zapory sieciowe, SELinux i ciągi połączeń aplikacji.

Praktyczny wzorzec: aplikacja i baza danych na oddzielnych serwerach

Przykład z życia wzięty: aplikacja i baza danych na oddzielnych serwerach

Utwórz użytkownika aplikacji ograniczonego do adresu IP serwera aplikacji. Otwórz port 3306 tylko dla tego adresu IP (UFW lub firewalld).

Bind MySQL do 0.0.0.0 i wymuś protokół TLS dla ruchu produkcyjnego.

Monitoruj połączenia za pomocą performance_schema i logowania w dziennikach błędów.

Ustaw stały czas serwera (NTP), aby zapewnić dokładność dzienników i kopii zapasowych.

Kiedy wybrać hosting zarządzany czy pomoc ekspertów. Jeśli wolisz skupić się na swojej aplikacji niż na utrzymaniu bazy danych, rozważ manageserwery d lub zoptymalizowany hosting.

sudo firewall-cmd --reload

Cel Kluczowy krok / polecenie
Weryfikacja usługi sudo systemctl status mysql --no-pager
Instalacja (Ubuntu/Debian) sudo apt update; sudo apt install -y mysql-server
Start i włączenie sudo systemctl enable -now mysql
Zabezpieczenie sudo mysql_secure_installation
Test działania mysql -u root -p -e "SHOW DATABASES;"
Dzienniki /var/log/mysql/error.log (Ubuntu/Debian)
Port 3306 w użyciu ss -lntp | grep 3306
ścieżki logów i status usługi

tags: #serwer #mysql #debian

Popularne posty:

About the author

Tomasz Sanecki administrator

Informatyk z zawodu i zamiłowania. Od 2007r właściciel firmy Perfect Systems. Specjalista do spraw bezpieczeństwa IT, serwisu urządzeń elektronicznych, sieci komputerowych. Prywatnie mąż i ojciec dwójki dzieci. Pasjonat nowoczesnych technologii, motocykli oraz włoskiego espresso.