Błąd połączenia z bazą danych w WordPressie ma zwykle źródło w wp-config.php. Poznaj przyczyny, test połączenia, naprawę tabel i moment na przywrócenie kopii.
Autor: McProdukt · Opublikowano: · Aktualizacja:
Komunikat „Błąd podczas nawiązywania połączenia z bazą danych" (ang. „Error establishing a database connection") oznacza, że WordPress nie może połączyć się z bazą MySQL lub MariaDB, w której trzyma treści strony. Najczęściej winne są błędne dane w pliku wp-config.php: nazwa bazy, użytkownik, hasło albo adres serwera bazy. Rzadziej przyczyną są uszkodzone tabele, przeciążony serwer bazy lub wyczerpane limity. Poniżej pokazujemy, jak w kilka minut ustalić przyczynę i naprawić stronę.
WordPress przy każdym wyświetleniu strony pobiera treści z bazy danych. Jeśli nie może się z nią połączyć, zamiast strony pokazuje tylko ten komunikat. Dane do połączenia zapisuje w pliku wp-config.php w głównym katalogu strony, a dokumentacja WordPressa wskazuje, że błąd zwykle wynika właśnie z pomyłki w tym pliku.
Zanim zaczniesz szukać, sprawdź dwie rzeczy:
/wp-admin - jeśli zamiast błędu połączenia informuje, że tabele bazy są niedostępne i baza może wymagać naprawy, to połączenie działa, a problemem są uszkodzone tabele.Jeśli korzystasz z cache stron, np. LSCache, część podstron może się wyświetlać z pamięci podręcznej mimo niedziałającej bazy. Miarodajny jest wtedy panel administracyjny.
| Przyczyna | Kiedy się zdarza | Co zrobić |
|---|---|---|
Błędne dane w wp-config.php | po migracji, ręcznej instalacji, edycji pliku | porównaj DB_NAME, DB_USER, DB_PASSWORD i DB_HOST z danymi w panelu |
| Zmienione hasło użytkownika bazy | po zmianie hasła w panelu hostingu | wpisz nowe hasło w wp-config.php |
| Zły adres serwera bazy | po przeprowadzce od dostawcy, który trzymał bazy na osobnym serwerze | ustaw DB_HOST według instrukcji nowego hostingu |
| Uszkodzone tabele | po awarii w trakcie zapisu albo przerwanym imporcie | tryb naprawy WordPressa, phpMyAdmin albo kopia zapasowa |
| Za dużo połączeń | nagły ruch, boty, brak cache, długie zapytania | odczekaj, włącz cache, sprawdź ruch w logach |
| Brak miejsca lub limit bazy | pełny dysk, przekroczony limit konta | zwolnij miejsce albo wybierz większy pakiet |
| Włamanie | podmieniony wp-config.php, usunięte tabele | przywróć czystą kopię i zabezpiecz stronę |
Otwórz wp-config.php w menedżerze plików panelu albo przez FTP i porównaj cztery wartości z danymi bazy w panelu hostingu. Fragment pliku wygląda tak:
define( 'DB_NAME', 'konto_wp' );
define( 'DB_USER', 'konto_wpuser' );
define( 'DB_PASSWORD', 'tu-jest-haslo' );
define( 'DB_HOST', 'localhost' );
konto_wp. Po migracji z innego panelu w pliku często zostaje stara nazwa bez tego prefiksu.localhost, a niestandardowy port dopisuje się po dwukropku, np. localhost:3307.Najszybszy test to plik PHP, który łączy się z bazą tymi samymi danymi co WordPress i wyświetla dokładny komunikat błędu. Utwórz w katalogu strony plik o trudnej do zgadnięcia nazwie, np. test-db-8h3k.php:
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$db = new mysqli('localhost', 'konto_wpuser', 'tu-jest-haslo', 'konto_wp');
echo 'Połączenie działa';
} catch (mysqli_sql_exception $e) {
echo 'Błąd ' . $e->getCode() . ': ' . $e->getMessage();
}
Otwórz go w przeglądarce, a zaraz po teście usuń, bo zawiera hasło do bazy. Jak czytać wynik:
wp-config.php; jeśli są identyczne, sprawdź tabele.Zamiast skryptu możesz też zalogować się do phpMyAdmin danymi z wp-config.php - jeśli logowanie się uda, dane są poprawne.
WordPress ma wbudowany tryb naprawy bazy. Włączasz go jedną linią w wp-config.php i uruchamiasz pod adresem /wp-admin/maint/repair.php.
wp-config.php linię define( 'WP_ALLOW_REPAIR', true );.twojadomena.pl/wp-admin/maint/repair.php i wybierz naprawę bazy albo naprawę z optymalizacją.Ważne ograniczenie: narzędzie sprawdza tabele poleceniem CHECK TABLE i naprawia je poleceniem REPAIR TABLE, które według dokumentacji MySQL działa tylko dla tabel MyISAM, ARCHIVE i CSV. Silnik tabel sprawdzisz w phpMyAdmin, w kolumnie „Typ". Tabel InnoDB ten tryb nie naprawi - gdy są uszkodzone, najpewniejszym rozwiązaniem jest przywrócenie bazy z kopii zapasowej.
Błąd, który znika po kilku minutach, to zwykle przeciążenie: wszystkie dostępne połączenia z bazą są zajęte albo konto wyczerpało zasoby. Serwer MySQL ma limit jednoczesnych połączeń (max_connections), a administrator może też ograniczyć liczbę połączeń jednego użytkownika bazy (max_user_connections). Gdy zapytania wykonują się zbyt długo, a ruch rośnie, kolejne połączenia są odrzucane.
wp-login.php i xmlrpc.php.Kopię przywróć, gdy naprawa tabel nie pomaga, gdy baza została skasowana lub nadpisana albo gdy błąd jest skutkiem włamania. Wybierz kopię sprzed wystąpienia problemu i przywróć najpierw samą bazę - pliki strony zwykle są w porządku. Po włamaniu przywróć też pliki i zmień wszystkie hasła, w tym hasło użytkownika bazy.
W hostingu McProdukt kopie plików i baz danych tworzą się automatycznie - w standardowych pakietach co 24 godziny i są przechowywane przez 30 dni. Przed większymi zmianami i tak warto zrobić własną kopię; jak to zaplanować, piszemy w tekście kopie zapasowe strony WWW.
localhost - baza działa lokalnie, na tym samym serwerze co strona.wp-config.php adresu domeny ani IP jako hosta bazy.Porty i adresy wszystkich usług zebraliśmy w tabeli porty poczty, FTP, SSH i MySQL. Jeśli zamiast błędu bazy widzisz komunikat o krytycznym błędzie, zajrzyj do poradnika krytyczny błąd WordPressa, przy pustym ekranie - do tekstu biała strona WordPressa, a inne kody serwera opisujemy w przewodniku błędy HTTP 403, 404, 500, 502, 503.
Serwer LiteSpeed z LSCache, Redis i automatyczne kopie baz znajdziesz w ofercie hostingu WordPress. Jeśli przenosisz stronę od innego dostawcy, migrację strony i poczty zrobimy za Ciebie bezpłatnie.
Strona główna najpewniej wyświetla się z pamięci podręcznej, która nie potrzebuje bazy. Panel administracyjny zawsze łączy się z bazą, więc pokazuje prawdziwy stan - diagnozuj problem na jego podstawie.
Dane w wp-config.php: na nowym hostingu baza ma zwykle inną nazwę, innego użytkownika i inne hasło. Jeśli bazy nie utworzono, zobaczysz błąd „Unknown database", a jeśli jest pusta - instalator WordPressa zamiast strony.
Nie. Strona naprawy działa bez logowania, więc każdy mógłby ją uruchamiać i obciążać bazę. Dokumentacja WordPressa zaleca wyłączenie tej opcji po rozwiązaniu problemu.
Jeśli dane w wp-config.php są poprawne, a ani skrypt testowy, ani phpMyAdmin nie mogą połączyć się z bazą, problem leży najpewniej po stronie serwera. Zgłoś go dostawcy, podając godzinę wystąpienia i treść komunikatu.
Tak, jeśli nie wpiszesz nowego hasła w wp-config.php. WordPress łączy się z bazą hasłem zapisanym w tym pliku, więc po każdej zmianie w panelu zaktualizuj też DB_PASSWORD.
Wszystkie poradniki z kategorii: WordPress