15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
01.11.2024

Jak zainstalować i zabezpieczyć phpMyAdmin na Ubuntu (Kompletny przewodnik)

phpMyAdmin to jeden z najczęściej używanych narzędzi open-source do zarządzania bazami danych MySQL i MariaDB za pośrednictwem interfejsu graficznego opartego na przeglądarce. Niezależnie od tego, czy jesteś deweloperem, administratorem systemu czy właścicielem witryny, dramatycznie upraszcza złożone operacje na bazach danych — od uruchamiania zapytań SQL po importowanie/eksportowanie danych — bez konieczności posiadania wiedzy z zakresu wiersza poleceń.

Jednak ponieważ phpMyAdmin jest domyślnie dostępny za pośrednictwem publicznego adresu URL, pozostawienie go niezabezpieczonego stanowi poważne zagrożenie. Ten kompleksowy przewodnik przeprowadzi Cię przez instalację phpMyAdmin na Ubuntu 20.04/22.04, konfigurację go za pomocą Apache i wzmocnienie go przed nieautoryzowanym dostępem za pomocą wielu warstw bezpieczeństwa.

Spis treści

  1. Wymagania wstępne
  2. Krok 1 — Aktualizacja systemu i indeksu pakietów
  3. Krok 2 — Instalacja phpMyAdmin
  4. Krok 3 — Konfiguracja Apache dla phpMyAdmin
  5. Krok 4 — Zabezpieczenie phpMyAdmin za pomocą uwierzytelniania HTTP Basic
  6. Krok 5 — Ograniczenie dostępu na podstawie adresu IP (opcjonalne, ale zalecane)
  7. Krok 6 — Włączenie SSL do szyfrowania ruchu
  8. Krok 7 — Dostęp do phpMyAdmin
  9. Rozwiązywanie typowych problemów
  10. Podsumowanie

Wymagania wstępne {#prerequisites}

Przed rozpoczęciem upewnij się, że spełnione są następujące wymagania:

  • Serwer z systemem Ubuntu 20.04 lub 22.04 (fizyczny lub wirtualny)
  • MySQL lub MariaDB zainstalowany i aktywnie uruchomiony
  • Zainstalowany serwer internetowy Apache2
  • Konto użytkownika z uprawnieniami sudo
  • Nazwa domeny lub statyczny adres IP wskazujący na Twój serwer
  • (Zalecane) Ważny certyfikat SSL do szyfrowanego dostępu HTTPS

> Porada: Jeśli nie masz jeszcze środowiska serwera, rozważ AlexHost VPS Hosting — w pełni zarządzane lub niezarządzane plany Linux VPS z natychmiastowym uruchomieniem, dostępem root i magazynem SSD, idealne do bezpiecznego uruchamiania phpMyAdmin.

Krok 1 — Aktualizacja systemu i indeksu pakietów {#step-1}

Zawsze zacznij od odświeżenia list pakietów i zastosowania wszelkich oczekujących aktualizacji systemu. Zapewnia to instalację najnowszej dostępnej wersji phpMyAdmin i unika konfliktów zależności.

sudo apt update && sudo apt upgrade -y

Krok 2 — Instalacja phpMyAdmin {#step-2}

Zainstaluj phpMyAdmin za pomocą oficjalnego repozytorium Ubuntu APT:

sudo apt install phpmyadmin -y

Podczas instalacji pojawi się interaktywny kreator konfiguracji. Wykonaj te kroki ostrożnie:

2.1 — Wybór serwera internetowego

Zostaniesz poproszony o wybranie serwera internetowego do automatycznej konfiguracji:

Please choose the web server that should be automatically configured to run phpMyAdmin.

  [*] apache2
  [ ] lighttpd

Użyj spacji do wybrania apache2, a następnie naciśnij Tab aby wyróżnić <Ok> i naciśnij Enter.

2.2 — Konfiguracja bazy danych za pomocą dbconfig-common

Następnie zostaniesz poproszony, czy chcesz skonfigurować bazę danych dla phpMyAdmin za pomocą dbconfig-common:

Configure database for phpmyadmin with dbconfig-common?

Wybierz Tak. Następnie zostaniesz poproszony o wprowadzenie hasła aplikacji MySQL dla wewnętrznego użytkownika bazy danych phpMyAdmin. Możesz wprowadzić silne hasło lub pozostawić je puste, aby je automatycznie wygenerować.

2.3 — Weryfikacja instalacji

Po zakończeniu instalacji potwierdź, że phpMyAdmin jest zainstalowany:

dpkg -l phpmyadmin

Powinieneś zobaczyć linię pokazującą zainstalowaną wersję pakietu.

Krok 3 — Konfiguracja Apache dla phpMyAdmin {#step-3}

W niektórych konfiguracjach Ubuntu plik konfiguracji Apache phpMyAdmin nie jest automatycznie włączany. Sprawdź i włącz go ręcznie.

3.1 — Włączenie konfiguracji phpMyAdmin

sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
sudo a2enconf phpmyadmin

3.2 — Weryfikacja pliku konfiguracji

Otwórz plik konfiguracji, aby przejrzeć jego zawartość:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Plik powinien zawierać następujące dyrektywy (lub podobne):

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authz_core.c>
        # Apache 2.4
        <RequireAny>
            Require all granted
        </RequireAny>
    </IfModule>
</Directory>

Zapisz i zamknij plik za pomocą CTRL+X, a następnie Y, a następnie Enter.

3.3 — Ponowne uruchomienie Apache

Zastosuj zmiany konfiguracji:

sudo systemctl restart apache2

Sprawdź, czy Apache działa bez błędów:

sudo systemctl status apache2

Krok 4 — Zabezpieczenie phpMyAdmin za pomocą uwierzytelniania HTTP Basic {#step-4}

Domyślnie każdy, kto zna adres IP Twojego serwera, może dotrzeć do strony logowania phpMyAdmin. Dodanie warstwy uwierzytelniania HTTP Basic tworzy drugą bramę hasła, zanim użytkownicy zobaczą formularz logowania phpMyAdmin.

4.1 — Instalacja apache2-utils

sudo apt install apache2-utils -y

4.2 — Tworzenie pliku hasła i użytkownika

Utwórz plik .htpasswd i dodaj swojego pierwszego użytkownika administracyjnego. Zastąp your_admin_user wybraną nazwą użytkownika:

sudo mkdir -p /etc/phpmyadmin
sudo htpasswd -c /etc/phpmyadmin/.htpasswd your_admin_user

Zostaniesz poproszony o wprowadzenie i potwierdzenie hasła. Aby dodać dodatkowych użytkowników później (bez flagi -c, która by nadpisała plik):

sudo htpasswd /etc/phpmyadmin/.htpasswd another_user

4.3 — Aktualizacja konfiguracji Apache phpMyAdmin

Edytuj plik konfiguracji phpMyAdmin, aby wymusić uwierzytelnianie:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Zlokalizuj blok <Directory /usr/share/phpmyadmin> i dodaj następujące linie wewnątrz niego:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    # HTTP Basic Authentication
    AuthType Basic
    AuthName "Restricted Access — Authorized Personnel Only"
    AuthUserFile /etc/phpmyadmin/.htpasswd
    Require valid-user

    <IfModule mod_authz_core.c>
        <RequireAny>
            Require valid-user
        </RequireAny>
    </IfModule>
</Directory>

Zapisz i zamknij plik.

4.4 — Ponowne uruchomienie Apache

sudo systemctl restart apache2

Teraz przejście do /phpmyadmin najpierw wyświetli monit o poświadczenia uwierzytelniania HTTP przed wyświetleniem strony logowania phpMyAdmin.

Krok 5 — Ograniczenie dostępu na podstawie adresu IP (opcjonalne, ale zalecane) {#step-5}

Aby uzyskać jeszcze silniejszą ochronę, ogranicz dostęp phpMyAdmin tylko do określonych zaufanych adresów IP. Jest to szczególnie przydatne, jeśli zawsze uzyskujesz dostęp do serwera ze stałego adresu IP (takiego jak sieć biurowa lub VPN).

Edytuj konfigurację Apache phpMyAdmin:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Zmodyfikuj blok <Directory> aby uwzględnić ograniczenia oparte na IP:

<Directory /usr/share/phpmyadmin>
    Options Indexes FollowSymLinks
    DirectoryIndex index.php

    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/phpmyadmin/.htpasswd

    <RequireAll>
        Require valid-user
        Require ip 203.0.113.50
        # Add more trusted IPs below:
        # Require ip 198.51.100.0/24
    </RequireAll>
</Directory>

Zastąp 203.0.113.50 swoim rzeczywistym zaufanym adresem IP lub podsiecią. Zapisz plik i ponownie uruchom Apache:

sudo systemctl restart apache2

> Uwaga: Jeśli Twój adres IP zmienia się często, rozważ użycie VPN ze statycznym adresem IP lub polegaj wyłącznie na uwierzytelnianiu HTTP Basic w połączeniu z SSL.

Krok 6 — Włączenie SSL do szyfrowania ruchu {#step-6}

Wysyłanie poświadczeń bazy danych przez zwykły HTTP stanowi krytyczne zagrożenie bezpieczeństwa. Zawsze powinieneś uzyskiwać dostęp do phpMyAdmin za pośrednictwem HTTPS. Istnieją dwa główne podejścia:

Opcja A — Użyj certyfikatu SSL Let’s Encrypt (bezpłatnie)

Jeśli masz nazwę domeny wskazującą na Twój serwer, zainstaluj Certbot:

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d yourdomain.com

Certbot automatycznie skonfiguruje Apache do przekierowania HTTP na HTTPS i zainstaluje bezpłatny, automatycznie odnawiający się certyfikat.

Opcja B — Użyj komercyjnego certyfikatu SSL

W środowiskach produkcyjnych obsługujących wrażliwe dane komercyjnie wydany certyfikat SSL zapewnia silniejsze sygnały zaufania i ochronę gwarancji. Możesz uzyskać zaufane certyfikaty SSL bezpośrednio z AlexHost SSL Certificates, z opcjami od walidacji domeny (DV) do certyfikatów o rozszerzonej walidacji (EV).

Po zainstalowaniu certyfikatu SSL upewnij się, że Twój adres URL phpMyAdmin używa https://:

https://yourdomain.com/phpmyadmin

Krok 7 — Dostęp do phpMyAdmin {#step-7}

Po zainstalowaniu i zastosowaniu środków bezpieczeństwa otwórz przeglądarkę i przejdź do:

https://your_server_ip_or_domain/phpmyadmin

Napotkasz dwa monity uwierzytelniania po kolei:

  1. Monit uwierzytelniania HTTP Basic — Wprowadź nazwę użytkownika i hasło, które utworzyłeś za pomocą htpasswd
  2. Strona logowania phpMyAdmin — Wprowadź swoją nazwę użytkownika MySQL/MariaDB (np. root) i jej hasło

Po pomyślnym zalogowaniu będziesz mieć pełny dostęp do swoich baz danych MySQL za pośrednictwem interfejsu graficznego phpMyAdmin.

Rozwiązywanie typowych problemów {#troubleshooting}

phpMyAdmin zwraca błąd 404 Not Found

Konfiguracja Apache może nie być połączona lub włączona. Uruchom:

sudo a2enconf phpmyadmin
sudo systemctl reload apache2

Sprawdź również, czy istnieje dowiązanie symboliczne:

ls -la /etc/apache2/conf-available/phpmyadmin.conf

Błąd „Nie można połączyć się z serwerem MySQL”

Sprawdź, czy MySQL/MariaDB jest uruchomiony:

sudo systemctl status mysql
# or for MariaDB:
sudo systemctl status mariadb

Jeśli jest zatrzymany, uruchom go:

sudo systemctl start mysql

Błąd HTTP 500 Internal Server Error

Często wskazuje to na brakujący moduł PHP. Zainstaluj wymagane rozszerzenia PHP:

sudo apt install php-mbstring php-zip php-gd php-json php-curl -y
sudo systemctl restart apache2

Pusta strona po zalogowaniu

Wyczyść pamięć podręczną przeglądarki lub sprawdź dzienniki błędów Apache, aby uzyskać szczegóły:

sudo tail -f /var/log/apache2/error.log

Podsumowanie najlepszych praktyk bezpieczeństwa

Przed przejściem na żywo przejrzyj tę listę kontrolną bezpieczeństwa:

Środek bezpieczeństwa
15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij