Votre site n'affiche plus qu'une ligne : « Erreur lors de la connexion à la base de données ». WordPress n'a pas pu ouvrir la base où vivent vos pages, vos réglages et vos comptes. Vos contenus sont en général intacts : ce guide explique comment trouver laquelle des quatre causes possibles est en jeu, et la corriger.
wp-config.php. Vos contenus sont en général intacts.DB_NAME, DB_USER, DB_PASSWORD et DB_HOST de wp-config.php avec celles du panneau de l’hébergeur.À chaque page affichée, WordPress ouvre une connexion à sa base de données MySQL ou MariaDB avec quatre informations écrites dans wp-config.php, à la racine du site :
define( 'DB_NAME', 'nom_de_la_base' );
define( 'DB_USER', 'utilisateur' );
define( 'DB_PASSWORD', 'mot_de_passe' );
define( 'DB_HOST', 'localhost' );
« Erreur lors de la connexion à la base de données » veut dire que cette connexion a échoué. Quatre causes le produisent : des identifiants qui ne correspondent plus, un serveur de base de données arrêté ou injoignable, un serveur saturé, ou une base endommagée. Les sections qui suivent les passent de la plus simple à vérifier à la plus rare.
Si le serveur est en cause, ouvrez un ticket chez l'hébergeur en donnant l'heure du début de la panne et le message exact. Rien n'est à modifier sur le site pendant ce temps.
C'est la cause la plus fréquente après un déménagement de site, un changement de mot de passe de la base dans le panneau de l'hébergeur, ou une restauration. Comparez les quatre valeurs de wp-config.php avec la rubrique des bases de données de votre hébergeur :
DB_NAME et DB_USER : beaucoup d'hébergeurs les préfixent par le nom du compte (compte_wordpress). Le préfixe fait partie du nom.DB_PASSWORD : en cas de doute, définissez un nouveau mot de passe pour l'utilisateur dans le panneau, et reportez-le dans le fichier.DB_HOST : localhost chez beaucoup d'hébergeurs, mais pas chez tous. Certains donnent un nom de serveur ou une adresse, parfois suivie d'un port (:3306). La valeur exacte figure dans le panneau.Un mot de passe qui contient une apostrophe (') coupe la chaîne PHP qui l'entoure dans wp-config.php. Faites-la précéder d'une barre oblique inverse (\'), ou choisissez un mot de passe sans apostrophe.
WordPress affiche un message générique. MySQL, lui, dit précisément ce qui ne va pas. Deux façons de l'interroger avec les valeurs de wp-config.php :
mysql -h localhost -u utilisateur -p nom_de_la_base
Avec WP-CLI, wp db check lit directement wp-config.php et vérifie les tables avec ces identifiants.
Déposez ce fichier à la racine du site sous un nom difficile à deviner, ouvrez-le dans le navigateur, puis supprimez-le aussitôt : il contient le mot de passe de la base.
<?php
mysqli_report(MYSQLI_REPORT_OFF);
$lien = @mysqli_connect('localhost', 'utilisateur', 'mot_de_passe', 'nom_de_la_base');
echo $lien ? 'Connexion réussie' : 'Échec : ' . mysqli_connect_error();
La première ligne compte : depuis PHP 8.1, une connexion qui échoue lève une exception par défaut, et la page resterait blanche au lieu d'afficher le message de MySQL.
| MySQL répond | La cause | Le correctif |
|---|---|---|
Access denied for user 'utilisateur'@'localhost' (using password: YES) | Le couple utilisateur et mot de passe est refusé, ou l’utilisateur n’a pas le droit de se connecter depuis cet hôte. | Redéfinir le mot de passe dans le panneau et le reporter dans DB_PASSWORD ; vérifier DB_USER. |
Access denied for user 'utilisateur'@'localhost' to database 'nom_de_la_base' | L'utilisateur se connecte, mais n'a pas de droits sur cette base. | Associer l'utilisateur à la base dans le panneau de l'hébergeur, avec tous les privilèges. |
Unknown database 'nom_de_la_base' | La connexion fonctionne, mais aucune base ne porte ce nom. | Corriger DB_NAME, préfixe compris ; vérifier que la base existe toujours. |
Too many connections | Le serveur a atteint son nombre maximal de connexions simultanées. | Voir la section sur les erreurs intermittentes. |
Connection refused ou No such file or directory (code 2002 depuis PHP), Can't connect to MySQL server (en ligne de commande) | Aucun serveur ne répond à cette adresse : serveur arrêté, ou DB_HOST erroné. | Vérifier DB_HOST dans le panneau ; sinon, prévenir l'hébergeur. |
Connexion réussie | Les identifiants sont bons. | Chercher du côté de la base elle-même : section suivante. |
Quand les identifiants sont bons mais que des tables sont endommagées, le site public affiche le même message d'erreur de connexion, et l'administration un message plus précis : « Une ou plusieurs tables de votre base de données sont indisponibles. La base de données a peut-être besoin d’être réparée. ». WordPress fournit un outil pour cela. Ajoutez cette ligne dans wp-config.php :
define( 'WP_ALLOW_REPAIR', true );
Ouvrez ensuite https://www.votre-site.com/wp-admin/maint/repair.php et lancez « Réparer la base de données ». Retirez la ligne dès la réparation terminée : tant qu'elle est présente, cette page est accessible à n'importe qui, sans connexion.
Avant toute réparation, faites un export de la base (wp db export, ou l'onglet Exporter de phpMyAdmin). Si la réparation échoue, l'hébergeur peut restaurer la base depuis ses sauvegardes.
Une erreur qui apparaît à certaines heures puis disparaît d'elle-même signale un serveur saturé plutôt qu'un réglage faux. Les causes les plus courantes :
wp-login.php ou xmlrpc.php, visibles dans les journaux d'accès de l'hébergeur.Les correctifs : bloquer les tentatives de connexion abusives, installer un cache de pages, désactiver xmlrpc.php si aucune application ne l'utilise, et demander à l'hébergeur les journaux de la période en erreur.
Avec Serenity by Simafri, on crée votre site Internet professionnel, on l'héberge, on le sécurise et on le tient à jour. Vous nous écrivez, on s'occupe de tout. Nom de domaine et messagerie professionnelle compris.
En général, non. Le message dit que WordPress n'a pas pu se connecter à la base, pas que la base a disparu. Si phpMyAdmin affiche toujours les tables du site, vos pages, articles et réglages sont en place.
Parce que le nouvel hébergement utilise d'autres identifiants de base : nom de la base, utilisateur, mot de passe et parfois adresse du serveur. Reportez les valeurs du nouveau panneau dans DB_NAME, DB_USER, DB_PASSWORD et DB_HOST, dans wp-config.php.
Réinstaller WordPress ne change ni les identifiants de wp-config.php ni l'état du serveur de base de données, qui sont les causes de ce message. Testez d'abord les identifiants, puis l'état du serveur, puis l'intégrité des tables.
D'une saturation plutôt que d'un réglage : trop de connexions simultanées, un pic de trafic ou des robots. Les journaux d'accès et la consommation des ressources dans le panneau de l'hébergeur montrent ce qui se passait au moment de l'erreur.
Simafri
Parlons de votre projet
Dites-nous en deux mots ce qu'il vous faut : on revient vers vous rapidement.
Merci ! Votre demande a bien été envoyée. Nous vous répondrons rapidement.
Vous préférez l'email ? Écrivez-nous à support@simafri.com.