Bahnhofstraße 22, 52134 Herzogenrath Poniedziałek - piątek: 8:00 - 16:30 kontakt@milnersoftware.de 0176 66798849

Aktualności · WordPress · · 5 min czytania

Błąd połączenia z bazą danych w WordPressie – przyczyny i naprawa

Zamiast strony widać tylko błąd połączenia z bazą danych? Wyjaśniam, jak plikiem testowym sprawdzić, czy winne są dane dostępowe, serwer bazy danych czy uszkodzone tabele.

Vorhängeschloss auf einer Computertastatur als Symbol für Sicherheit

W skrócie: „Błąd podczas nawiązywania połączenia z bazą danych” (po niemiecku „Fehler beim Aufbau einer Datenbankverbindung”, po angielsku „Error establishing a database connection”) oznacza, że WordPress nie może połączyć się ze swoją bazą MySQL. Najczęściej dane dostępowe w wp-config.php są już nieaktualne, np. po zmianie hostingu albo hasła. Inne przyczyny to przeciążony lub niedziałający serwer bazy danych i uszkodzone tabele. Małym plikiem testowym w kilka minut sprawdzą Państwo, który przypadek zachodzi.

Komunikat pojawia się na każdej podstronie, często także pod /wp-admin. Dla odwiedzających wygląda to na zepsutą stronę. W rzeczywistości treści w większości przypadków są nienaruszone, bo leżą w bazie danych. WordPress po prostu nie może się teraz do nich dostać.

Jak WordPress łączy się z bazą danych

Wszystkie strony, wpisy, ustawienia i użytkownicy są zapisani w bazie MySQL lub MariaDB. Przy każdym wyświetleniu strony WordPress loguje się do niej czterema danymi z pliku wp-config.php w katalogu głównym:

define( 'DB_NAME', 'nazwa_bazy' );
define( 'DB_USER', 'uzytkownik' );
define( 'DB_PASSWORD', 'haslo' );
define( 'DB_HOST', 'localhost' );

Jeśli logowanie się nie uda, WordPress od razu przerywa działanie i pokazuje komunikat o błędzie. Możliwości są więc dwie: albo dane są błędne, albo serwer bazy danych nie odpowiada.

Najczęstsze przyczyny

1. Błędne lub zmienione dane dostępowe

To najczęstszy przypadek. Ktoś zmienił w panelu hostingu hasło do bazy danych, często ze względów bezpieczeństwa i bez myślenia o WordPressie. Albo strona została przeniesiona do innego hostingodawcy, a wp-config.php zawiera jeszcze stare dane.

2. Błędny host bazy danych

Wielu hostingodawców używa localhost, inni osobnego serwera baz danych o nazwie typu rdbms.strato.de w Strato albo db….hosting-data.io w IONOS. Kto przenosi stronę i nie poprawi DB_HOST, dostaje właśnie ten komunikat. Prawidłowa wartość jest podana w panelu hostingu przy bazie danych.

3. Przeciążony lub niedziałający serwer bazy danych

Jeśli błąd pojawia się tylko od czasu do czasu, serwer bazy danych jest prawdopodobnie przeciążony. Typowe przyczyny to nagle duża liczba odwiedzających, agresywne boty albo wtyczka, która przy każdym wyświetleniu wykonuje ciężkie zapytania. Na tanich pakietach hostingu współdzielonego liczba jednoczesnych połączeń jest ograniczona. Czasem po prostu hostingodawca ma awarię. Rzut oka na jego stronę statusu oszczędza wtedy wiele szukania.

4. Uszkodzone tabele

Po awarii serwera albo przerwanym imporcie tabele mogą być uszkodzone. Panel pokazuje wtedy często nieco inny komunikat: że jedna lub więcej tabel bazy danych jest niedostępnych i bazę trzeba naprawić.

5. Baza usunięta albo pełna

Rzadko, ale się zdarza: pakiet hostingu został wypowiedziany albo nieopłacony i bazę usunięto. Albo osiągnięto limit miejsca na bazę danych. Oba przypadki widać w panelu hostingu.

Krok 1: porównać dane dostępowe

Proszę otworzyć przez FTP albo w menedżerze plików plik wp-config.php i porównać cztery wartości z danymi w panelu hostingu w sekcji „Bazy danych” lub „MySQL”. Warto zwrócić uwagę na spacje, przestawione litery i apostrof na końcu. Hasła hostingodawca zwykle nie pokazuje, ale można je tam ustawić na nowo i potem wpisać do wp-config.php.

Pliku wp-config.php nigdy nie należy wysyłać mailem ani na czacie osobom, którym nie zlecili Państwo pracy. Zawiera on hasło do wszystkich danych strony.

Krok 2: przetestować połączenie

Czy dane są prawidłowe, sprawdzą Państwo małym plikiem testowym. Proszę utworzyć w katalogu głównym plik o losowej nazwie, np. dbtest-7f3k.php, i wpisać do niego wartości z wp-config.php:

<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
    new mysqli('localhost', 'uzytkownik', 'haslo', 'nazwa_bazy');
    echo 'Polaczenie OK';
} catch (mysqli_sql_exception $e) {
    echo 'Blad: ' . $e->getMessage();
}

Proszę otworzyć plik w przeglądarce. Odpowiedź zawęża problem:

  • „Polaczenie OK”: dane są prawidłowe. Problem leży wtedy w samym wp-config.php, np. w literówce, albo w uszkodzonych tabelach.
  • „Access denied for user”: nazwa użytkownika lub hasło są błędne albo użytkownik nie ma uprawnień do tej bazy.
  • „Unknown database”: nazwa bazy jest błędna albo baza już nie istnieje.
  • „Connection refused”, „No such file or directory” albo „getaddrinfo failed”: host jest błędny albo serwer bazy danych nie działa.
  • „Too many connections”: serwer jest przeciążony.

Plik testowy proszę od razu usunąć. Zawiera hasło do bazy danych jawnym tekstem.

Krok 3: naprawić uszkodzone tabele

Jeśli połączenie działa, a WordPress dalej zgłasza błędy, można użyć wbudowanej funkcji naprawy. Proszę dodać w wp-config.php nad linią /* That's all, stop editing! */ (w polskich instalacjach jest to linia o zakończeniu edycji):

define( 'WP_ALLOW_REPAIR', true );

Następnie proszę otworzyć https://twoja-domena.de/wp-admin/maint/repair.php i wybrać naprawę bazy danych. Ważne: ta strona jest dostępna bez logowania. Linię trzeba usunąć zaraz po naprawie.

Jeśli baza jest duża albo chodzi o sklep, proszę najpierw zrobić jej kopię przez phpMyAdmin w panelu hostingu. Naprawa zwykle jest bezpieczna, ale nie zawsze.

Gdy błąd pojawia się tylko czasami

Jeśli komunikat pojawia się i znika, prawie zawsze problemem jest obciążenie, a nie dane dostępowe. Proszę sprawdzić w statystykach hostingu albo w logach dostępu, czy błąd zbiega się ze szczytami ruchu albo z podejrzanie dużą liczbą wejść pojedynczych botów. Cache stron wyraźnie odciąża bazę. Wtyczki, które przy każdym wyświetleniu zapisują statystyki albo wykonują duże zapytania, to częsty winowajca. Jeśli to nie wystarczy, pakiet hostingu jest po prostu za mały dla tej strony.

Kiedy warto poprosić o pomoc

Gdy dane dostępowe są prawidłowe, a błąd zostaje, gdy sama naprawa zgłasza błędy, gdy chodzi o sklep z zamówieniami albo gdy strona właśnie została przeniesiona i nie działają też inne rzeczy. Błędnego kroku w bazie danych bez kopii zapasowej nie da się cofnąć.

Profesjonalna pomoc

Sprawdzam dane dostępowe, serwer bazy danych i tabele, usuwam przyczynę i dbam o to, żeby błąd nie wrócił przy następnym szczycie ruchu. Naprawa WordPress zaczyna się od 290 € netto, analiza błędu kosztuje 150 € netto. Jeśli błąd pojawił się po zmianie hostingu, pomoże przeniesienie strony, przy którym baza danych, poczta i domena przechodzą razem z nią.

Autor: Przemysław Milner

Pozostałe wpisy