Czym jest błąd „Error establishing a database connection"?
To komunikat WordPress, nie serwera, oznacza on, że silnik potrafił uruchomić plik wp-config.php, ale nie zdołał połączyć się z bazą danych MySQL. Skoro WordPress trzyma w bazie kompletnie wszystko, wpisy, ustawienia, użytkowników, produkty, brak tego połączenia zatrzymuje stronę całkowicie, jeszcze zanim zdąży wyrenderować się jakikolwiek szablon.
To inny problem niż error 500 czy biały ekran śmierci, tam PHP zwykle się uruchamia i coś próbuje wykonać. Tu zatrzymanie następuje wcześniej, na etapie połączenia z bazą, więc typowe triki jak wyłączanie wtyczek przez FTP nic nie dadzą, dopóki nie naprawisz samego połączenia.
Najczęstsze przyczyny błędu połączenia z bazą
1. Błędne dane dostępowe w wp-config.php
Nazwa bazy, użytkownik, hasło albo host w pliku wp-config.php nie zgadzają się z tym, co faktycznie istnieje na serwerze. Dzieje się to najczęściej po migracji, przywróceniu backupu na innym hostingu albo po ręcznej zmianie hasła do bazy w panelu, bez zaktualizowania go w konfiguracji WordPress.
2. Serwer MySQL nie odpowiada lub przekroczony limit połączeń
Na hostingu współdzielonym każde konto ma limit jednoczesnych połączeń do bazy (często 10 do 30). Gdy strona ma duży ruch, źle skonfigurowany cache albo działa na niej pętla zapytań, limit się wyczerpuje i kolejne żądania dostają odmowę połączenia. Zdarza się też awaria samej usługi MySQL po stronie hostingu, wtedy problem dotyczy wszystkich stron na tym serwerze, nie tylko Twojej.
3. Uszkodzone tabele bazy danych
Nagłe wyłączenie serwera podczas zapisu, przerwany import bazy albo awaria dysku hostingu mogą uszkodzić tabele, najczęściej te największe: wp_options lub wp_posts. MySQL odmawia wtedy poprawnej odpowiedzi na zapytania, co WordPress zgłasza jako brak połączenia, mimo że sama usługa bazy danych działa.
4. Uszkodzony plik wp-config.php
Literówka po ręcznej edycji, brakujący średnik albo zduplikowana stała (na przykład dwukrotnie zdefiniowane DB_HOST) potrafią sprawić, że PHP źle odczyta dane logowania do bazy, mimo że same dane w panelu hostingu są poprawne.
Jak zdiagnozować i naprawić błąd krok po kroku
Krok 1: Sprawdź dane logowania w wp-config.php
Przez FTP lub menedżer plików otwórz wp-config.php i porównaj wartości DB_NAME, DB_USER, DB_PASSWORD i DB_HOST z danymi w panelu hostingu (sekcja bazy danych MySQL). Najczęstszy błąd to literówka w haśle albo nazwa bazy skopiowana bez prefiksu konta hostingowego.
define('DB_NAME', 'nazwa_bazy');
define('DB_USER', 'uzytkownik');
define('DB_PASSWORD', 'haslo');
define('DB_HOST', 'localhost');
Krok 2: Sprawdź wartość DB_HOST
Większość hostingów (home.pl, cyber_Folks, LH.pl) używa localhost, ale niektóre wymagają konkretnego adresu IP lub nazwy serwera bazy, widocznej w panelu przy danych dostępowych do MySQL. Po migracji na nowy hosting to jedna z pierwszych rzeczy do sprawdzenia.
Krok 3: Sprawdź status usługi MySQL w panelu hostingu
Zaloguj się do panelu (cPanel, DirectAdmin albo panel własny hostingu) i sprawdź, czy baza danych w ogóle istnieje i czy usługa MySQL działa. Jeśli hosting zgłasza awarię bazy po swojej stronie, jedyne co możesz zrobić, to poczekać albo zgłosić to do supportu, problem nie leży wtedy w WordPress.
Krok 4: Napraw tabele przez phpMyAdmin
W phpMyAdmin zaznacz wszystkie tabele bazy, z listy rozwijanej Z zaznaczonymi wykonaj wybierz Napraw tabelę (Repair table). Jeśli masz dostęp do WP-CLI, to samo zrobisz jedną komendą:
wp db repair
Krok 5: Włącz tryb naprawy bazy WordPress
Gdy nie masz dostępu do phpMyAdmin, dodaj w wp-config.php przed linią /* That's all, stop editing! */:
define('WP_ALLOW_REPAIR', true);
Następnie wejdź na adres twojadomena.pl/wp-admin/maint/repair.php, WordPress pokaże narzędzie do naprawy i optymalizacji tabel. Po zakończeniu koniecznie usuń tę linię z wp-config.php, narzędzie jest publicznie dostępne dla każdego, kto zna adres.
Kiedy lepiej zadzwonić do specjalisty
Jeśli dane w wp-config.php są poprawne, MySQL działa według panelu hostingu, a strona nadal pokazuje błąd połączenia, przyczyna bywa głębsza, uszkodzona tabela rdzenia, limit zasobów konta hostingowego przekraczany cyklicznie albo błąd po stronie serwera, który wymaga kontaktu z hostingiem w Twoim imieniu. Dla sklepu czy strony firmowej każda godzina przestoju kosztuje. Zadzwoń do mnie: 577 020 415, diagnozę zaczynam w ciągu godziny, a naprawę błędów WordPress wyceniam uczciwie, rozliczając co 15 minut.