NeuBlack Friday – 50 % Rabatt auf die erste Zahlung
WordPress-Fehlerbehebung

Fehler beim Aufbau einer Datenbankverbindung

WordPress geladen, lesen wp-config.php, und konnte keine Antwort von MySQL erhalten. Jede Seite auf der Website ist leer, bis sie kann.

Error establishing a database connection

Kurzantwort

Neunmal in zehn stimmen die Anmeldeinformationen in wp-config.php nicht mehr mit der Datenbank überein. Bestätigen Sie mit einer direkten Verbindung, die genau diese vier Werte verwendet; wenn dies eine Verbindung herstellt, sind das Problem nicht die Anmeldeinformationen und der nächste Abschnitt sagt Ihnen, wo Sie stattdessen suchen sollen.

Diagnose

Die wahrscheinlichsten Ursachen zuerst.

Gehen Sie die Liste der Reihe nach durch. Prüfen Sie jede Ursache, bevor Sie etwas ändern, da die Lösungen unterschiedlich sind und eine Vermutung mehr Zeit kostet als ein Befehl.

UrsacheSo prüfen Sie esLösung
Falsche Anmeldeinformationen in wp-config.phpVerbinden Sie sich von Hand mit den gleichen vier Werten, die wp-config.php verwendet. Wenn dies mit "Zugriff verweigert" fehlschlägt, ist die Datei das Problem und es muss nichts anderes getestet werden.Richtig DB_NAME, DB_USER, DB_PASSWORD und DB_HOST. Eine Migration ist der übliche Grund, warum sie drifteten: Das Archiv brachte die Werte des alten Hosts mit.
Der Datenbankserver läuft nichtDie gleiche direkte Verbindung schlägt mit "Kann nicht verbinden" statt "Zugriff verweigert" fehl. Die Unterscheidung zwischen diesen beiden Nachrichten ist die gesamte Diagnose.Starten Sie MySQL. Wenn es nicht auf dem Laufenden bleibt, benennt sein eigenes Fehlerprotokoll den Grund, und auf Shared Hosting ist dieser Grund normalerweise Speicher.
Die Datenbank hat ihr Verbindungslimit erreichtDer Fehler ist intermittierend - die Website funktioniert, dann nicht, dann tut. Eine direkte Verbindung gelingt, während die Besucher den Fehler noch sehen.Erheben Sie max_connections oder finden Sie, was Verbindungen offen hält. Ein Plugin, das eine Verbindung pro Anfrage öffnet und niemals schließt, ist der häufigste Schuldige.
Ein beschädigter TischNur einige Seiten scheitern oder wp-admin lädt, während das Frontend nicht. WordPress bietet möglicherweise einen Reparaturlink anstelle dieses Fehlers.Setzen Sie WP_ALLOW_REPAIR in wp-config.php, besuchen Sie /wp-admin/maint/repair.php, und entfernen Sie dann die Konstante - diese Seite hat keine Authentifizierung.
DB_HOST benennt etwas UnerreichbaresDie Anmeldeinformationen sind richtig und MySQL ist verfügbar, aber der Host in wp-config.php wird nicht vom Webserver aufgelöst.Auf containerisierten Stacks ist das ein Dienstname, nicht localhost, und localhost ist das, was die meisten migrierten Konfigurationen enthalten.
Anleitung

Schritt für Schritt zur Lösung.

Die Befehle setzen WP-CLI und Shell-Zugriff voraus. Jeder Schritt erklärt, was er tut, damit Sie ihn bei Bedarf im Dashboard oder per SFTP ausführen können.

  1. Lesen Sie, was wp-config.php tatsächlich sagt

    Die vier Konstanten, die wichtig sind, sind nahe der Spitze der Datei.

    grep -E "DB_(NAME|USER|PASSWORD|HOST)" wp-config.php
  2. Probieren Sie diese genauen Werte gegen MySQL aus

    Dies ist der Test, der das Problem in zwei Teile teilt. "Zugriff verweigert" bedeutet, dass die Anmeldeinformationen falsch sind; "Kann nicht verbinden" bedeutet, dass der Server nicht antwortet.

    mysql --user='DB_USER' --password='DB_PASSWORD' --host='DB_HOST' 'DB_NAME' -e 'SELECT 1;'
  3. Wenn die Anmeldeinformationen falsch waren, korrigieren Sie sie

    Bearbeiten Sie wp-config.php oder setzen Sie sie mit WP-CLI, damit Sie nicht selbst die richtigen Zitate finden müssen.

    wp config set DB_PASSWORD 'the-real-password'
    wp db check
  4. Wenn der Server ausgefallen ist, schauen Sie sich an, warum, bevor Sie ihn neu starten

    Ein MySQL, das einmal gestorben ist, wird wieder sterben. Sein Fehlerprotokoll nennt den Grund, und Out-of-Memory ist die häufigste Antwort auf einem kleinen Server.

    tail -n 50 /var/log/mysql/error.log
  5. Bestätigen Sie von WordPress, nicht von der Shell

    Eine Shell-Verbindung beweist, dass MySQL von der Shell aus erreichbar ist. Nur WordPress kann beweisen, dass es von WordPress aus erreichbar ist.

    wp db check && wp option get siteurl
Mit MagicWP

Darum kümmert sich die Plattform.

Die Anmeldeinformationen driften hier nie, weil wp-config.php sie nicht trägt: es liest sie aus der Umgebung mit getenv(), so dass das Drehen eines Passworts eine Änderung an einem Ort ist und nicht eine Bearbeitung, die in einer Datei wiederholt werden muss. Die Datenbank läuft in einem eigenen Container mit eigener Speicherzulage, so dass ein beschäftigter PHP-Prozess sie nicht aushungern kann, und Fix Site zeigt eine wiederhergestellte Site in einer Aktion auf die richtige Datenbank.

Häufige Fragen

Häufige Fragen.

Warum hat das von selbst begonnen, ohne dass sich etwas geändert hat?
Etwas änderte sich, auch wenn man es nicht änderte: Ein Host drehte ein Passwort, ein Datenbankserver lief aus und wurde neu gestartet, oder ein Backup-Plugin stellte eine ältere wp-config.php wieder her. Der direkte Verbindungstest sagt Ihnen, welche davon es war, weil die Fehlermeldung unterschiedlich ist.
Bedeutet das, dass meine Daten weg sind?
Fast nie. Der Fehler ist, die Datenbank zu erreichen, nicht den Inhalt davon. Korruption ist die am wenigsten verbreitete Ursache auf dieser Liste, und selbst dann ist es normalerweise eine Tabelle und nicht die ganze Sache.
Sollte ich die eingebaute Reparaturseite verwenden?
Nur kurz. WP_ALLOW_REPAIR öffnet /wp-admin/maint/repair.php für jeden, der die URL kennt, ohne dass ein Login erforderlich ist, also entfernen Sie die Konstante, sobald die Reparatur beendet ist.
Die Seite funktioniert und bricht dann alle paar Minuten. Was ist das?
Verbindungserschöpfung statt schlechter Anmeldeinformationen. Anfragen sind erfolgreich, während eine Verbindung frei ist und scheitern, während keines frei ist, weshalb sie zufällig aussieht. Finden Sie heraus, was Verbindungen hält, anstatt das Limit zu erhöhen und zu warten.
Verwandte Fehler

War es keiner davon?

Diese Fehler können im Browser ähnlich aussehen.