Comment déboguer WordPress "Erreur lors de l’établissement de la connexion à la base de données"

introduction

WordPress est l’un des systèmes de gestion de contenu open source les plus populaires au monde. Bien que centré au début sur le blogging, il est devenu au fil des années une plate-forme plus flexible pour les sites Web en général. Après presque quinze ans de développement, il est assez poli et robuste, mais des problèmes peuvent encore se poser.

Si vous avez récemment tenté de charger votre site Web utilisant WordPress et que vous voyez à la place un message indiquant «Erreur d’établissement de la connexion à la base de données», la cause en est l’un des suivants:

  • La base de données s’est écrasée, souvent à cause d’un manque de mémoire du serveur.

  • Les informations de connexion à la base de données sont incorrectes dans votre configuration WordPress.

  • Les tables de la base de données WordPress ont été endommagées

Examinons ces problèmes un par un pour déterminer s’ils vous affectent et comment les résoudre.

Conditions préalables

Ce tutoriel suppose ce qui suit:

  • Vous utilisez WordPress sur une machine avec une ligne de commande et un accès + sudo +

  • Votre base de données fonctionne sur le même serveur que WordPress (typique d’une configuration WordPress auto-hébergée, moins typique d’un environnement d’hébergement WordPress partagé).

  • Vous connaissez votre nom d’utilisateur, votre mot de passe et le nom de la base de données créée pour WordPress. Ces informations doivent avoir été créées lors de la configuration initiale de votre installation WordPress.

Étape 1 - Vérifier les ressources de mémoire du serveur

Une bonne première étape pour déboguer ce problème consiste à essayer de vous connecter au serveur pour voir si le système est en bon état et si MySQL est en cours d’exécution.

Connectez-vous à votre serveur via SSH, en veillant à remplacer les parties en surbrillance ci-dessous par les informations de votre propre utilisateur et du serveur:

ssh @

Si vous avez besoin d’aide pour vous connecter à votre serveur, veuillez consulter notre article Comment vous connecter à votre Droplet avec SSH.

Maintenant que nous sommes connectés, vérifions que votre serveur MySQL est en cours d’exécution:

sudo netstat -plt

La commande + netstat + imprime des informations sur le système de mise en réseau de notre serveur. Dans ce cas, nous voulons que les noms des programmes (+ -p +) écoutent les connexions (+ -l +) sur une socket TCP (+ -t +). Vérifiez la sortie pour une ligne listant + mysqld +, surlignée ci-dessous:

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

Si votre sortie est similaire, nous savons que MySQL est en cours d’exécution et à l’écoute des connexions. Si vous ne voyez pas MySQL dans la liste, essayez de démarrer MySQL manuellement. Sur la plupart des systèmes, cela ressemble à ceci:

sudo systemctl start

Certaines distributions Linux (CentOS, notamment) utilisent + mysql + au lieu de ‘mysql +’ pour le nom du service. Remplacez le cas échéant.

MySQL devrait commencer. Pour vérifier, relancez la commande + netstat + que nous avons utilisée ci-dessus et vérifiez le résultat du processus + mysqld +.

MySQL et WordPress ont tous deux besoin de beaucoup de mémoire pour fonctionner correctement. Si MySQL s’est arrêté en raison d’une mémoire insuffisante, nous devrions en voir des preuves dans ses journaux d’erreur. Regardons:

zgrep -a "allocate memory" error.log*

+ zgrep + recherchera dans les fichiers journaux, y compris les anciens fichiers journaux archivés sous forme de fichiers compressés + .tar.gz +. Nous recherchons des lignes contenant + allocation de mémoire +, dans tout fichier + error.log * + du répertoire ++.

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

Si vous voyez une ou plusieurs lignes comme ci-dessus, votre serveur MySQL est à court de mémoire et se ferme. S’il ne s’agit que d’une ligne, il est possible que le trafic soit inhabituel. S’il y a beaucoup de lignes d’erreur, votre serveur est régulièrement contraint par la mémoire. Dans les deux cas, la solution consiste à migrer vers un serveur disposant de plus de mémoire disponible. Sur la plupart des fournisseurs de cloud, il est simple de mettre à niveau un serveur existant avec un temps d’immobilisation minimal.

Si vous ne voyez aucune sortie après avoir exécuté la commande + zgrep +, votre serveur ne manque pas de mémoire. Si votre site génère toujours des erreurs, passez à l’étape suivante. Nous examinerons notre configuration WordPress et nous assurerons que les informations de connexion à MySQL sont correctes.

Étape 2 - Vérification des informations d’identification de connexion à la base de données

Si vous venez de déplacer votre installation WordPress entre des serveurs ou des fournisseurs d’hébergement, vous devrez peut-être mettre à jour les informations de connexion de votre base de données. Celles-ci sont stockées sur le serveur dans un fichier PHP appelé + wp-config.php.

Commençons par trouver votre fichier + wp-config.php:

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

Cela recherche tout dans le répertoire racine (+ / +), et trouve tout fichier nommé + wp-config.php +. Si un tel fichier existe, le chemin complet sera affiché:

Outputwp-config.php

Maintenant, utilisez votre éditeur de texte favori pour ouvrir le fichier de configuration. Nous allons utiliser l’éditeur + nano ici:

sudo nano wp-config.php

Cela ouvrira un fichier texte contenant des variables de configuration et du texte explicatif. En haut, vous trouverez les informations de connexion à notre base de données:

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', '');

Vérifiez que ces trois variables sont correctes en fonction de vos enregistrements. S’ils ne semblent pas corrects, mettez à jour si nécessaire, sauvegardez et quittez (+ CTRL-O +, puis + CTRL-X + si vous utilisez + nano +). Même si les informations de connexion semblent correctes, essayez de vous connecter à la base de données à partir de la ligne de commande, juste pour vous en assurer. Copiez et collez les détails directement du fichier de configuration dans la commande suivante:

mysqlshow -u  -p

Vous serez invité à entrer un mot de passe. Collez-le et appuyez sur + ENTER. Si vous obtenez une erreur * Accès refusé *, votre nom d’utilisateur ou mot de passe est incorrect. Sinon, la commande + mysqlshow + affichera toutes les bases de données auxquelles l’utilisateur spécifié a accès:

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

Vérifiez que l’une des bases de données correspond exactement à ce qui se trouve dans votre fichier de configuration WordPress. Si tel est le cas, vous avez vérifié que votre configuration était correcte et que WordPress devrait pouvoir se connecter à la base de données avec succès. Rechargez votre site Web pour voir si l’erreur a disparu.

Ne fonctionne toujours pas? La prochaine chose à faire est de réparer la base de données.

Étape 3 - Réparation de la base de données WordPress

Parfois, en raison d’un échec de la mise à niveau, d’un blocage de la base de données ou d’un plugin défectueux, votre base de données WordPress peut être corrompue. Ce problème peut se présenter comme une erreur de connexion à la base de données. Si votre problème n’est pas lié au serveur MySQL ni au fichier de configuration, essayez de réparer votre base de données.

WordPress fournit un utilitaire intégré pour réparer la base de données. Il est désactivé par défaut, car il ne dispose pas de contrôle d’accès et peut poser un problème de sécurité. Nous allons activer la fonctionnalité, exécuter les réparations, puis la désactiver.

Ouvrez à nouveau le fichier + wp-config.php:

sudo nano wp-config.php

Sur toute ligne vierge, collez ce qui suit:

wp-config.php

define('WP_ALLOW_REPAIR', true);

Ceci définit une variable que WordPress recherche pour déterminer si elle doit activer la fonctionnalité de réparation.

Enregistrez et fermez le fichier. Basculez sur votre navigateur et chargez l’adresse suivante, en vous assurant de remplacer le domaine ou l’adresse IP de votre site par la partie mise en évidence:

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

Une page de réparation de base de données va charger:

image: https: //assets.digitalocean.com/articles/wp-database-error/wp-db-repair.png [page de réparation de la base de données WordPress]

Appuyez sur le bouton * Base de données de réparation *. Une page de résultats s’affiche pour vous permettre de voir les vérifications et les réparations en temps réel:

image: https: //assets.digitalocean.com/articles/wp-database-error/wp-db-repair-results.png [Page de résultats de réparation de la base de données WordPress]

Une fois le processus terminé, veillez à ouvrir à nouveau le fichier + wp-config.php + et à supprimer la ligne que nous venons de coller.

Avez-vous remarqué des réparations en cours? Réessayez votre site et vérifiez si l’erreur a disparu. Si des problèmes non réparables sont détectés, vous devrez peut-être restaurer la base de données à partir d’une sauvegarde, le cas échéant. Veuillez consulter notre tutoriel Comment importer et exporter des bases de données dans MySQL pour plus de détails sur comment le faire

Si aucun problème n’a été trouvé avec la base de données, nous n’avons toujours pas découvert le problème. C’est peut-être des problèmes intermittents qui nous manquent ou quelque chose de plus obscur. Permet de conclure avec quelques autres possibilités à essayer.

Conclusion

La majorité des problèmes liés à «Erreur d’établissement de la connexion à la base de données» auraient dû être résolus avec les trois étapes ci-dessus. Néanmoins, il pourrait y avoir des problèmes plus insaisissables qui continuent à se présenter de cette manière. Voici d’autres articles qui pourraient être utiles pour détecter et neutraliser la cause de cette erreur:

  • Une source fréquente de trafic important (et donc de performances médiocres et d’erreurs) est une attaque par force brute commune aux installations WordPress. Vous pouvez neutraliser l’attaque en suivant Comment protéger WordPress de Attaques XML-RPC.

  • Vous pouvez économiser certaines ressources du serveur en mettant en œuvre la mise en cache sur votre installation WordPress. Il existe de nombreux plugins de mise en cache simples pour WordPress. Notre tutoriel, Comment configurer Redis Caching to Speed Up WordPress vous montrera comment configurer un cache Redis sauvegardé particulièrement performant.