Wie Debuggen der WordPress "Fehler beim Herstellen der Datenbankverbindung"

Einführung

WordPress ist eines der beliebtesten Open-Source-Content-Management-Systeme der Welt. Obwohl es anfänglich auf das Bloggen ausgerichtet war, hat es sich im Laufe der Jahre zu einer flexibleren Plattform für Websites im Allgemeinen entwickelt. Nach fast fünfzehnjähriger Entwicklungszeit ist es ziemlich poliert und robust, dennoch können Probleme auftauchen.

Wenn Sie kürzlich versucht haben, Ihre WordPress-basierte Website zu laden, und stattdessen die Meldung "Fehler beim Herstellen der Datenbankverbindung" angezeigt wurde, liegt meist eine der folgenden Ursachen vor:

  • Die Datenbank ist abgestürzt, häufig aufgrund von nicht genügend Arbeitsspeicher auf dem Server

  • Die Anmeldeinformationen für die Datenbank sind in Ihrer WordPress-Konfiguration nicht korrekt

  • Die WordPress-Datenbanktabellen wurden beschädigt

Sehen wir uns diese Probleme einzeln an, um festzustellen, ob sie Sie betreffen und wie Sie sie beheben können.

Voraussetzungen

In diesem Lernprogramm wird Folgendes vorausgesetzt:

  • Sie führen WordPress auf einem Computer aus, auf den Sie über die Befehlszeile und den Zugriff auf "+ sudo +" verfügen

  • Ihre Datenbank wird auf demselben Server wie WordPress ausgeführt (typisch für ein selbst gehostetes WordPress-Setup, weniger typisch für eine gemeinsam genutzte WordPress-Hosting-Umgebung).

  • Sie kennen Ihren Datenbank-Benutzernamen, Ihr Passwort und den Namen der für WordPress erstellten Datenbank. Diese Informationen sollten während der Ersteinrichtung Ihrer WordPress-Installation erstellt worden sein.

Schritt 1 - Überprüfen Sie die Serverspeicherressourcen

Ein guter erster Schritt zum Debuggen dieses Problems besteht darin, sich beim Server anzumelden, um festzustellen, ob das System fehlerfrei ist und MySQL ausgeführt wird.

Melden Sie sich über SSH bei Ihrem Server an. Vergessen Sie nicht, die hervorgehobenen Bereiche unten durch Ihre eigenen Benutzer- und Serverdetails zu ersetzen:

ssh @

Wenn Sie Hilfe beim Anmelden bei Ihrem Server benötigen, lesen Sie bitte unseren Artikel How To Connect To Your Droplet with SSH.

Nachdem wir uns erfolgreich angemeldet haben, überprüfen wir, ob Ihr MySQL-Server ausgeführt wird:

sudo netstat -plt

Der Befehl "+ netstat " gibt Informationen über das Netzwerksystem unseres Servers aus. In diesem Fall möchten wir, dass die Namen der Programme (` -p `) auf Verbindungen (` -l `) an einem TCP-Socket (` -t `) warten. Überprüfen Sie die Ausgabe auf eine Zeile mit der Auflistung " mysqld +" (siehe unten):

OutputActive Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 *:ssh                   *:*                     LISTEN      2205/sshd
tcp        0      0 localhost:smtp          *:*                     LISTEN      2361/master
tcp6       0      0 [::]:http               [::]:*                  LISTEN      16091/apache2
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN      2205/sshd
tcp6       0      0 ip6-localhost:smtp      [::]:*                  LISTEN      2361/master

Wenn Ihre Ausgabe ähnlich ist, wissen wir, dass MySQL ausgeführt wird und auf Verbindungen wartet. Wenn MySQL nicht aufgelistet ist, starten Sie MySQL manuell. Auf den meisten Systemen würde das so aussehen:

sudo systemctl start

Einige Linux-Distributionen (insbesondere CentOS) verwenden "+ mysql " anstelle von " mysql +" als Dienstnamen. Bei Bedarf ersetzen.

MySQL sollte starten. Führen Sie zur Überprüfung den oben genannten Befehl + netstat + erneut aus und überprüfen Sie die Ausgabe auf einen + mysqld + - Prozess.

Sowohl MySQL als auch WordPress benötigen ausreichend Speicher, um ordnungsgemäß zu funktionieren. Wenn MySQL aufgrund einer Speichermangelsituation beendet wurde, sollten wir dies in den Fehlerprotokollen nachweisen. Sehen wir mal:

zgrep -a "allocate memory" error.log*

+ zgrep + durchsucht Protokolldateien, einschließlich älterer Protokolldateien, die als komprimierte + .tar.gz + Dateien archiviert wurden. Wir suchen nach Zeilen, die "+ Speicher zuweisen " enthalten, in einer beliebigen " error.log * " - Datei im "+" - Verzeichnis.

Output2017-04-11T17:38:22.604644Z 0 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

Wenn Sie eine oder mehrere der oben genannten Zeilen sehen, hat Ihr MySQL-Server keinen Speicher mehr und wird beendet. Wenn es sich nur um eine Leitung handelt, ist möglicherweise vorübergehend ungewöhnlicher Datenverkehr zu verzeichnen. Wenn es viele Fehlerzeilen gibt, wird der Speicher Ihres Servers regelmäßig eingeschränkt. In beiden Fällen besteht die Lösung darin, auf einen Server mit mehr verfügbarem Speicher zu migrieren. Bei den meisten Cloud-Anbietern ist es ganz einfach, einen vorhandenen Server mit minimalen Ausfallzeiten zu aktualisieren.

Wenn Sie nach der Ausführung des Befehls "+ zgrep +" keine Ausgabe sehen, verfügt Ihr Server nicht über genügend Arbeitsspeicher. Wenn auf Ihrer Site weiterhin Fehler auftreten, fahren Sie mit dem nächsten Schritt fort, in dem wir uns unsere WordPress-Konfiguration ansehen und sicherstellen, dass die MySQL-Anmeldedaten korrekt sind.

Schritt 2 - Überprüfen Sie die Anmeldeinformationen der Datenbank

Wenn Sie gerade Ihre WordPress-Installation zwischen Servern oder Hosting-Anbietern verschoben haben, müssen Sie möglicherweise Ihre Datenbankverbindungsdetails aktualisieren. Diese werden auf dem Server in einer PHP-Datei mit dem Namen "+ wp-config.php" gespeichert.

Lassen Sie uns zuerst Ihre "+ wp-config.php" -Datei finden:

sudo find / -name "wp-config.php"

Dies durchsucht das gesamte Stammverzeichnis (+ / +) nach unten und findet alle Dateien mit dem Namen + wp-config.php +. Wenn eine solche Datei existiert, wird der vollständige Pfad ausgegeben:

Outputwp-config.php

Verwenden Sie jetzt Ihren bevorzugten Texteditor, um die Konfigurationsdatei zu öffnen. Hier verwenden wir den + nano Editor:

sudo nano wp-config.php

Dadurch wird eine Textdatei mit Konfigurationsvariablen und erklärendem Text geöffnet. Oben oben finden Sie unsere Datenbankverbindungsinformationen:

wp-config.php

/** The name of the database for WordPress */
define('DB_NAME', '');

/** MySQL database username */
define('DB_USER', '');

/** MySQL database password */
define('DB_PASSWORD', '');

Überprüfen Sie anhand Ihrer Aufzeichnungen, ob diese drei Variablen korrekt sind. Wenn sie nicht richtig aussehen, aktualisieren Sie sie nach Bedarf, speichern Sie sie und beenden Sie sie ("+ STRG-O ", dann " STRG-X ", wenn Sie " nano +" verwenden). Selbst wenn die Anmeldeinformationen korrekt aussahen, lohnt es sich, über die Befehlszeile eine Verbindung zur Datenbank herzustellen. Kopieren Sie die Details direkt aus der Konfigurationsdatei und fügen Sie sie in den folgenden Befehl ein:

mysqlshow -u  -p

Sie werden aufgefordert, ein Passwort einzugeben. Fügen Sie es ein und drücken Sie + ENTER. Wenn Sie die Fehlermeldung * Zugriff verweigert * erhalten, ist Ihr Benutzername oder Passwort falsch. Andernfalls zeigt der Befehl + mysqlshow + alle Datenbanken an, auf die der angegebene Benutzer Zugriff hat:

Output+--------------------+
|     Databases      |
+--------------------+
| information_schema |
|       |
+--------------------+

Stellen Sie sicher, dass eine der Datenbanken genau mit Ihrer WordPress-Konfigurationsdatei übereinstimmt. In diesem Fall haben Sie überprüft, ob Ihre Konfiguration korrekt ist und WordPress sich erfolgreich in die Datenbank einloggen kann. Laden Sie Ihre Website neu, um festzustellen, ob der Fehler behoben ist.

Funktioniert immer noch nicht? Als nächstes versuchen Sie, die Datenbank zu reparieren.

Schritt 3 - Reparieren der WordPress-Datenbank

Manchmal kann aufgrund eines fehlgeschlagenen Upgrades, eines Datenbankabsturzes oder eines fehlerhaften Plugins Ihre WordPress-Datenbank beschädigt werden. Dieses Problem kann sich als Datenbankverbindungsfehler darstellen. Wenn Ihr Problem nicht auf dem MySQL-Server oder der Konfigurationsdatei lag, versuchen Sie, Ihre Datenbank zu reparieren.

WordPress bietet ein eingebautes Hilfsprogramm, um die Datenbank zu reparieren. Es ist standardmäßig deaktiviert, da es keine Zugriffskontrollen hat und ein Sicherheitsproblem darstellen könnte. Wir werden die Funktion aktivieren, die Reparaturen ausführen und sie dann deaktivieren.

Öffnen Sie die Datei + wp-config.php + erneut:

sudo nano wp-config.php

Fügen Sie in eine leere Zeile Folgendes ein:

wp-config.php

define('WP_ALLOW_REPAIR', true);

Dies definiert eine Variable, nach der WordPress sucht, um festzustellen, ob die Reparaturfunktion aktiviert werden soll.

Speichern und schließen Sie die Datei. Wechseln Sie zu Ihrem Browser und laden Sie die folgende Adresse. Ersetzen Sie dabei den hervorgehobenen Teil durch die Domain oder IP-Adresse Ihrer Site:

http:///wp-admin/maint/repair.php

Eine Datenbankreparaturseite wird geladen:

Klicken Sie auf die Schaltfläche "Datenbank reparieren", um zu einer Ergebnisseite zu gelangen, auf der Sie die Überprüfungen und Reparaturen in Echtzeit verfolgen können:

image: https://assets.digitalocean.com/articles/wp-database-error/wp-db-repair-results.png [Ergebnisseite für die Reparatur der WordPress-Datenbank]

Öffnen Sie nach Abschluss des Vorgangs die Datei "+ wp-config.php +" erneut und entfernen Sie die gerade eingefügte Zeile.

Haben Sie Reparaturen bemerkt? Versuchen Sie es erneut auf Ihrer Website und überprüfen Sie, ob der Fehler behoben ist. Wenn nicht behebbare Probleme festgestellt wurden, müssen Sie möglicherweise die Datenbank aus einer Sicherung wiederherstellen, sofern eine verfügbar ist. Weitere Informationen zum Importieren und Exportieren von Datenbanken in MySQL finden Sie in unserem Tutorial How To Import and Export Databases in MySQL wie das geht.

Wenn keine Probleme mit der Datenbank gefunden wurden, haben wir das Problem immer noch nicht entdeckt. Es könnte sich um zeitweise auftretende Probleme handeln, die uns fehlen, oder um etwas Dunkleres. Lassen Sie uns ein paar andere Möglichkeiten ausprobieren.

Fazit

Die meisten Probleme beim Herstellen der Datenbankverbindung sollten mit den drei oben genannten Schritten behoben worden sein. Dennoch könnte es schwer fassbare Probleme geben, die sich weiterhin auf diese Weise darstellen. Im Folgenden finden Sie einige weitere Artikel, die hilfreich sein können, um die Ursache dieses Fehlers zu ermitteln und zu neutralisieren: