668 145 480 info@jacekjagusiak.pl

Jeśli od dłuższego czasu pracujesz z WordPressem, to pewnie nie raz natknąłeś się na wiadomość:

„Error Establishing a Database Connection”

To jedna z najbardziej stresujących sytuacji – szczególnie gdy nie zdążyłeś zrobić backupu. Błąd może wystąpić bez żadnego wyraźnego powodu: po automatycznej aktualizacji, nagłym skoku ruchu, czy zmianie uprawnień. Ja sam wielokrotnie musiałem stawić czoła tej awarii – nie raz siwe włosy pojawiły się w chwilach kryzysu. Zazwyczaj udawało się to naprawić w 15-30 minut, ale zmuszało do zebrania całej wiedzy w jednym miejscu.

Z tego powstał ten poradnik, który zawiera zarówno klasyczne przyczyny i metody napraw, jak i nowoczesne rozwiązania – od wdrożenia monitoringu, przez komendy WP-CLI, aż po rozwiązania chmurowe.

Uwaga: zawsze rób backup bazy danych przed jakimikolwiek działaniami – nawet gdy wydaje się, że wstawiasz jedną linijkę SQL.

Co oznacza ten błąd?

Błąd Error Establishing a Database Connection oznacza, że WordPress nie może połączyć się z bazą danych MySQL/MariaDB. Najczęstsze przyczyny:

  • Błędne dane w wp-config.php (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST).
  • Uszkodzona lub brakująca baza lub tabele.
  • Serwer bazy danych jest niedostępny (z powodu przeciążenia lub awarii).
  • Zmiany uprawnień użytkownika bazodanowego.
  • Cień zmian DNS lub hostingu (np. migracja).
Sprawdź także:  Jak znaleźć, naprawić i edytować plik .httacces w Wordpress?

Błędy w wp-config.php i dane połączenia

Najpierw sprawdź dane w pliku wp-config.php:

define('DB_NAME', 'moja_baza');
define('DB_USER', 'moja_bazowy_user');
define('DB_PASSWORD', 'haslo');
define('DB_HOST', 'localhost'); // lub np. 127.0.0.1:8889, można też użyć DSN hosta chmurowego

🔍 Upewnij się, że:

  • Nie są zbędne spacje przed lub po haśle.
  • DB_HOST odpowiada serwerowi baz danych (na hostingu może być inny).
  • Wszystkie dane zgadzają się z danymi użytkownika bazy.

Czy błąd występuje również w panelu admina?

  1. Wejdź w panelu (wp-admin) i sprawdź czy błąd jest ten sam.
  2. Jeśli pojawi się inny komunikat:
    • „One or more database tables are unavailable. The database may need to be repaired” → napraw tabele WP przy użyciu:
define('WP_ALLOW_REPAIR', true);
  1. Otwórz http://twojastrona.pl/wp-admin/maint/repair.php i kliknij Repair Database.
  2. Usuń ten wpis z wp-config.php po naprawie.

Diagnostyka serwera bazy

Użyj wp-cli (jeśli masz SSH):

wp db check   # Sprawdza bazę
wp db repair  # Naprawia tabele

Te komendy są szybsze i wygodniejsze niż ręczną naprawa przez phpMyAdmin.

Skorzystaj z phpMyAdmina lub adminera:

  • Spróbuj zalogować się do bazy.
  • Jeśli przechodzisz przez wszystkie bazy, błąd może sugerować uprawnienia lub pracę serwera.
  • Jeśli połączenie nie działa z dwóch źródeł, to prawdopodobnie problem z hostem bazy.

Testowy skrypt PHP:

<?php
$link = mysqli_connect('localhost','user','pass','db_name');
if (!$link) {
   die('Błąd: ' . mysqli_connect_error());
}
echo 'Połączono bez problemu';
mysqli_close($link);

Umieść go w katalogu i wywołaj, by dowiedzieć się dokładnie, co nie działa – brak połączenia, niedostępność, brak uprawnień?

Obciążenie i problemy z hostingiem

Jeśli nagły wzrost ruchu lub boty przeciążają MySQL, to błąd może stać się prawdziwy.

Sprawdź także:  Jak wyłączyć XML-RPC w Wordpressie?

✅ Kroki:

  • Sprawdź logi serwera i procesy (mytop, htop, slow queries).
  • Użyj narzędzi monitorujących (np. NewRelic, Grafana + Prometheus, hostujące CDI).
  • Tymczasowo zwiększ limity procesów/dolny zakres CPU/RAM.
  • Rozważ przełączenie na serwer dedykowany, VPS lub chmurę (np. DigitalOcean, AWS RDS, Cloud SQL).

Nowoczesne rozwiązania w chmurze i architektury wysokiej dostępności

Hostingi zarządzane:

  • Kinsta, WP Engine, Flywheel – mają monitoring bazy, automatyczne reset bazy, wsparcie 24/7.

WordPress w Kubernetes lub docelowo w Dockerze:

  • Używaj zreplikowanych baz (Master + Read replicas) np. na AWS RDS, Google Cloud SQL.
  • Stosuj autentykację SSL między kontenerami a DB.
  • Ustal politykę rewizji, limit połączeń, health check:
    livenessProbe:
      exec:
        command: ['sh', '-c', 'mysqladmin ping -h $DB_HOST']
      initialDelaySeconds: 30
      periodSeconds: 10
    

7. Naprawa uszkodzonych tabel i siteurl

Jeśli WP się łączy, ale błędu jest brak tabel wp_options lub złe siteurl – możesz to zrobić bez CLI:

REPAIR TABLE wp_options;
UPDATE wp_options SET option_value='https://twojastrona.pl' WHERE option_name IN ('siteurl','home');

Kopie zapasowe, migracje i roll-back

  • Używaj narzędzi jak UpdraftPlus, BackWPup, lub tworzenia snapshotów VPS / chmura.
  • Przy migracji – sprawdź, czy w wp-config.php i wp_options jest spójność siteurl/home z rzeczywistym adresem.

Automatyzacja i monitoring

  • Wgrywaj skrypty monitorujące (cronjob co 5 min sprawdzający wp db check, WP-CLI, ping etc.).
  • Powiadomienia mailowe lub Slack w razie błędu.
  • Raporty wydajnościowe i czas działania bazy.

Podsumowanie – co teraz zrobić?

  1. Sprawdź, czy błąd występuje w panelu admina.
  2. Skontroluj/napraw dane w wp-config.php.
  3. Napraw bazę przez:
    • wp-cli,
    • phpMyAdmin + REPAIR,
    • format SQL.
  4. Sprawdź uprawnienia i połączenia.
  5. Wykonaj testowy skrypt PHP, by ocenić stan DB.
  6. Przeanalizuj obciążenie hostingu i logi.
  7. Dodaj monitoring, backupy i plan B (chmura, replikacja).
  8. Automatyzuj testy i naprawy, by nie powtarzać dramatów.

Wartościowy bonus

Jeśli chcesz, mogę dostarczyć gotowe skrypty monitoringowe, fragmenty YAML do Kubernetesa, czy plugin WordPress, który monitoruje i naprawia bazę – pisz śmiało, chętnie przygotuję kolejne fragmenty tego poradnika 🚀

Spis treści