Menu
Szybki wybór
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

phpMyAdmin — konfiguracja i bezpieczeństwo

phpMyAdmin to najpopularniejszy webowy interfejs MySQL — i jeden z najczęściej atakowanych elementów serwerów hostingowych. Niezabezpieczony panel to otwarte drzwi do całej bazy danych. Konfiguracja zajmuje 15 minut i eliminuje 99% automatycznych ataków.

Opublikowano: 8 kwietnia 2026

config.inc.php — kluczowe ustawienia bezpieczeństwa

Główny plik konfiguracyjny to /etc/phpmyadmin/config.inc.php (VPS Debian/Ubuntu) lub config.inc.php w katalogu instalacji. Minimalna konfiguracja bezpieczeństwa:

<?php
// Unikalny losowy string (min 32 znaki) — wygeneruj: openssl rand -base64 32
$cfg['blowfish_secret'] = 'ZMIEN_NA_LOSOWY_STRING_32_ZNAKI';

// Wymagaj SSL do logowania
$cfg['ForceSSL'] = true;

// Ukryj wersję phpMyAdmin
$cfg['ShowPhpInfo'] = false;
$cfg['VersionCheck'] = false;

// Bezpieczne cookie (tylko HTTPS)
$cfg['CookieSameSite'] = 'Strict';

// Wyłącz połączenia do dowolnego serwera MySQL
$cfg['AllowArbitraryServer'] = false;

// Timeout sesji — 30 minut
$cfg['LoginCookieValidity'] = 1800;
$cfg['LoginCookieDeleteAll'] = true;

Ograniczenie dostępu przez .htaccess (Apache)

Najskuteczniejsza metoda — zezwól tylko na konkretne adresy IP. Stwórz lub edytuj plik .htaccess w katalogu phpMyAdmin:

# Tylko te IP mają dostęp do phpMyAdmin
Order Deny,Allow
Deny from All
Allow from 203.0.113.10    # Twoje stałe IP biurowe
Allow from 203.0.113.20    # Twoje IP domowe

# Lub cały zakres sieci (np. biuro z dynamicznymi IP)
# Allow from 203.0.113.0/24

Dynamiczne IP: Jeśli Twój ISP przydziela dynamiczne IP, rozważ VPN (Tailscale jest darmowy dla małych zespołów) lub SSH tunneling zamiast whitelist IP. SSH tunnel: ssh -L 8080:localhost:80 user@serwer — potem otwórz localhost:8080/phpmyadmin w przeglądarce.

HTTP Basic Auth — dodatkowa warstwa uwierzytelniania

Basic Auth dodaje okno dialogowe przeglądarki przed formularzem logowania phpMyAdmin — boty atakujące /phpmyadmin/ zobaczą 401 zamiast strony logowania:

# Dodaj do .htaccess w katalogu phpMyAdmin:
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

# Wygeneruj plik .htpasswd:
# htpasswd -c /etc/phpmyadmin/.htpasswd admin_username

Zmiana URL — ukrycie standardowego adresu

Automatyczne boty skanują /phpmyadmin/, /pma/, /mysql/ i dziesiątki podobnych ścieżek. Zmiana aliasu na niestandardowy (np. /db-c8f2e1/) eliminuje tę kategorię ataków. Na Apache w /etc/apache2/conf-enabled/phpmyadmin.conf:

# Zmień:
Alias /phpmyadmin /usr/share/phpmyadmin
# Na:
Alias /db-c8f2e1 /usr/share/phpmyadmin

# Następnie:
systemctl reload apache2

Lista kontrolna zabezpieczeń phpMyAdmin

  • blowfish_secret — ustaw losowy string 32+ znaków (nie domyślny pusty)
  • Zmień URL — nie używaj /phpmyadmin/, /pma/, /mysql/
  • HTTP Basic Auth — okno dialogowe przed formularzem logowania
  • Whitelist IP — przez .htaccess lub Nginx allow/deny
  • ForceSSL = true — połączenia tylko przez HTTPS
  • AllowArbitraryServer = false — tylko skonfigurowane serwery MySQL
  • Aktualizuj phpMyAdmin — sprawdzaj CVE i aktualizuj regularnie
  • Wyłącz gdy nieużywany — systemctl disable phpmyadmin lub usuń alias

Najczęstsze pytania

Czy phpMyAdmin jest bezpieczny domyślnie? +
Domyślna instalacja phpMyAdmin nie jest bezpieczna — dostęp do panelu jest publiczny (każdy może próbować się zalogować), wersja oprogramowania jest widoczna (ułatwia celowane ataki), a panel często jest pod standardowym adresem /phpmyadmin/ który boty skanują automatycznie. Minimalny zestaw zabezpieczeń: zmiana URL panelu, ograniczenie dostępu do IP, HTTP Basic Auth lub VPN, ustawienie silnego blowfish_secret.
Jak zmienić adres URL phpMyAdmin? +
Na cPanel: zmień alias w konfiguracji Apache/Nginx. Na serwer VPS: w pliku /etc/apache2/conf-enabled/phpmyadmin.conf zmień Alias /phpmyadmin na /db-admin lub dowolny inny. Na DirectAdmin: zależnie od konfiguracji serwera — panel może być dostępny przez subdomenę lub dedykowany port. Niestandardowy URL nie jest wystarczającym zabezpieczeniem samym w sobie — to security through obscurity. Połącz z HTTP Basic Auth.
Czy powinienem wyłączyć phpMyAdmin na produkcji? +
Jeśli phpMyAdmin nie jest regularnie używany na serwerze produkcyjnym — rozważ wyłączenie lub dostęp tylko przez VPN/SSH tunnel. Każda dodatkowa ekspozycja interfejsu administracyjnego to dodatkowa powierzchnia ataku. Alternatywa: używaj Adminer (jeden plik PHP, łatwiejszy do usunięcia po pracy) lub zarządzaj bazą wyłącznie przez SSH/WP-CLI. Na hostingu współdzielonym phpMyAdmin jest zarządzany przez dostawcę.

Najpierw hardening, potem wybór serwera

Jeśli chcesz samodzielnie kontrolować dostęp do phpMyAdmin, rozważ VPS-y, na których ustawisz własny firewall, Nginx i Basic Auth.