NouveauBlack Friday : 50 % de réduction sur votre premier paiement
Dépannage WordPress

Erreur lors de la création d'une connexion à la base de données

WordPress chargé, lu wp-config.php, et ne pouvait pas obtenir de réponse de MySQL. Chaque page du site est vide jusqu'à ce qu'elle le puisse.

Error establishing a database connection

Réponse rapide

Neuf fois sur dix, les identifiants dans wp-config.php ne correspondent plus à la base de données. Confirmez avec une connexion directe en utilisant exactement ces quatre valeurs; si cela se connecte, le problème n'est pas les identifiants et la section suivante vous indique où chercher.

Diagnostic

Les causes les plus probables d’abord.

Parcourez la liste dans l’ordre. Vérifiez chaque cause avant de modifier quoi que ce soit : les correctifs diffèrent et une supposition coûte plus cher qu’une commande.

CauseComment vérifierCorrectif
Mauvaises références dans wp-config.phpConnectez-vous à la main avec les mêmes quatre valeurs que wp-config.php utilise. Si cela échoue avec "Accès refusé", le fichier est le problème et rien d'autre n'a besoin de test.Correct DB_NAME, DB_USER, DB_PASSWORD et DB_HOST. Une migration est la raison habituelle pour laquelle ils ont dérivé : l'archive a apporté les valeurs de l'ancien hôte avec elle.
Le serveur de base de données ne fonctionne pasLa même connexion directe échoue avec "ne peut pas se connecter" plutôt que "Accès refusé". La distinction entre ces deux messages est l'ensemble du diagnostic.Démarrez MySQL. Si elle ne reste pas debout, son propre journal d'erreur donne le nom de la raison et sur l'hébergement partagé, cette raison est généralement la mémoire.
La base de données a atteint sa limite de connexionL'erreur est intermittente - le site fonctionne, puis ne fonctionne pas, puis ne fonctionne. Une connexion directe réussit alors que les visiteurs voient toujours l'erreur.Levez max_connections, ou trouvez ce qui maintient les connexions ouvertes. Un plugin ouvrant une connexion par requête et ne jamais la fermer est le coupable commun.
Une table corrompueSeulement quelques pages échouent, ou wp-admin charge alors que la première extrémité ne le fait pas. WordPress peut offrir un lien de réparation au lieu de cette erreur.Lancez une réparation. Définissez WP_ALLOW_REPAIR dans wp-config.php, visitez /wp-admin/maint/repair.php, puis supprimez la constante - cette page n'a pas d'authentification.
DB_HOST nomme quelque chose d'inatteignableLes lettres de créances sont correctes et MySQL est en place, mais l'hôte dans wp-config.php ne résout pas à partir du serveur web.Utilisez le nom d'hôte que le serveur web peut effectivement atteindre. Sur les piles conteneurisées qui est un nom de service, pas localhost, et localhost est ce que contiennent les configs les plus migrés.
Guide

Corriger l’erreur, étape par étape.

Les commandes supposent un accès à WP-CLI et au terminal. Si vous n’en disposez pas, chaque étape explique comment procéder depuis le tableau de bord ou via SFTP.

  1. Lire ce que dit wp-config.php en fait

    Pas ce que vous vous souvenez de la configuration. Les quatre constantes qui comptent sont près du haut du fichier.

    grep -E "DB_(NAME|USER|PASSWORD|HOST)" wp-config.php
  2. Essayez ces valeurs exactes contre MySQL

    C'est le test qui divise le problème en deux. "Accès refusé" signifie que les identifiants sont erronés; "Impossible de se connecter" signifie que le serveur ne répond pas.

    mysql --user='DB_USER' --password='DB_PASSWORD' --host='DB_HOST' 'DB_NAME' -e 'SELECT 1;'
  3. Si les lettres de créances étaient erronées, corrigez-les.

    Edit wp-config.php, ou les configurer avec WP-CLI pour que vous n'ayez pas à trouver les bonnes citations vous-même.

    wp config set DB_PASSWORD 'the-real-password'
    wp db check
  4. Si le serveur était en panne, regardez pourquoi avant de le redémarrer

    Un MySQL qui est mort une fois mourra à nouveau. Son journal d'erreur donne le nom de la raison, et hors mémoire est la réponse la plus courante sur un petit serveur.

    tail -n 50 /var/log/mysql/error.log
  5. Confirmer de WordPress, pas de la coquille

    Une connexion shell prouve que MySQL est accessible depuis le shell. Seul WordPress peut prouver qu'il est accessible depuis WordPress.

    wp db check && wp option get siteurl
Sur MagicWP

Ce que la plateforme prend en charge.

Les identifiants ne dérivent jamais ici, car wp-config.php ne les transporte pas : il les lit depuis l'environnement avec getenv(), donc tourner un mot de passe est un changement en un seul endroit plutôt qu'une modification qui doit être répétée dans un fichier. La base de données fonctionne dans son propre conteneur avec sa propre réserve mémoire, donc un processus PHP occupé ne peut pas la priver, et Fix Site re-pointe un site restauré à la bonne base de données dans une action.

Questions fréquentes

Questions fréquentes.

Pourquoi cela a-t-il commencé seul, sans rien changer ?
Quelque chose a changé même si vous ne l'avez pas changé : un hôte a fait pivoter un mot de passe, un serveur de base de données est sorti de mémoire et a été redémarré, ou un plugin de sauvegarde a restauré un ancien wp-config.php. Le test de connexion directe vous indique lequel de ceux-ci il était, parce que le message d'échec diffère.
Est-ce que ça veut dire que mes données sont parties ?
Presque jamais. L'erreur est d'atteindre la base de données, pas sur le contenu de celle-ci. La corruption est la cause la moins commune de cette liste, et même alors, il est généralement une table plutôt que l'ensemble.
Dois-je utiliser la page de réparation intégrée?
Réglage WP_ALLOW_REPAIR ouvre /wp-admin/maint/repair.php à toute personne qui connaît l'URL, sans connexion requise, donc supprimez la constante au moment où la réparation se termine.
Le site fonctionne et se casse toutes les quelques minutes.
Les demandes réussissent alors qu'une connexion est libre et échoue alors qu'aucune n'est, c'est pourquoi elle semble aléatoire. Trouvez ce qui tient des connexions plutôt que d'augmenter la limite et d'attendre.
Erreurs associées

Si le problème vient d’ailleurs.

Ces erreurs peuvent se présenter de façon similaire dans le navigateur.