Contexte
Le site WordPress d’une PME en Suisse romande est devenu indisponible, avec le message « Error establishing a database connection ». Ce type d’incident peut venir d’un mot de passe modifié, d’un changement d’hébergement, d’un serveur MySQL indisponible, ou d’une base de données corrompue. L’objectif était de rétablir le site vite, puis d’éliminer la cause racine.
Symptômes observés
- Message WordPress: Error establishing a database connection.
- Front-end et
/wp-adminindisponibles. - Selon les cas, accès phpMyAdmin possible ou non.
Objectifs du dépannage
- Confirmer si la base est indisponible (serveur) ou si la config est erronée.
- Rétablir la connexion sans restauration globale si évitable.
- Vérifier l’intégrité des tables et la stabilité MySQL/MariaDB.
- Renforcer la prévention (monitoring, sauvegardes, alertes).
Diagnostic (checklist)
- Contrôle du statut MySQL/MariaDB côté hébergeur (incident global ou compte isolé).
- Vérification de
wp-config.php:DB_NAME,DB_USER,DB_PASSWORD,DB_HOST. - Test de connexion via un script PHP minimal (si nécessaire).
- Contrôle des tables: corruption, verrouillage, taille, espace disque.
- Vérification du DNS/Cloudflare (rare, mais possible en migration).
Exemple technique : contrôle rapide dans wp-config.php
Erreurs fréquentes: DB_HOST incorrect ou mot de passe modifié côté hébergeur.
define('DB_NAME', 'nom_de_db');
define('DB_USER', 'utilisateur_db');
define('DB_PASSWORD', 'mot_de_passe_db');
define('DB_HOST', 'localhost'); // parfois une valeur fournie par l'hébergeur
Exemple technique : tester la connexion MySQL (script minimal)
À déposer temporairement puis supprimer.
<?php
$mysqli = @new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($mysqli->connect_error) {
header('Content-Type: text/plain; charset=utf-8');
echo "Erreur MySQL: " . $mysqli->connect_error;
exit;
}
echo "OK: connexion DB";
Exemple technique : réparation via WP-CLI
Si WP-CLI est disponible, cela accélère le diagnostic.
wp db check
wp db repair
Exemple technique : activer la réparation native WordPress
À activer temporairement, puis désactiver immédiatement.
define('WP_ALLOW_REPAIR', true);
https://www.exemple.ch/wp-admin/maint/repair.php
Cause identifiée
Dans ce cas, le mot de passe de l’utilisateur MySQL avait été régénéré côté hébergement, sans mise à jour correspondante dans wp-config.php. Une fois le bon couple utilisateur/mot de passe réappliqué, la connexion a été restaurée. Un contrôle de tables a ensuite confirmé l’absence de corruption.
Correctifs appliqués
- Mise à jour des identifiants DB dans
wp-config.php. - Contrôle du
DB_HOST(valeur fournie par l’hébergeur si différente delocalhost). - Vérification des tables via
wp db checket contrôle d’espace disque. - Purge du cache applicatif et CDN (si actif) pour éviter des erreurs résiduelles.
- Ajout d’un monitoring disponibilité + alertes, pour détecter plus tôt.
Résultats
- Site remis en ligne et admin accessible.
- Connexion DB stabilisée, sans restauration de sauvegarde.
- Contrôles effectués sur pages clés et formulaires.
Prévention mise en place
- Documentation des paramètres DB (sans exposer les secrets).
- Procédure de changement de mot de passe: rotation + mise à jour
wp-config.php. - Monitoring uptime et alertes (incident détecté en minutes, pas en heures).
- Routine mensuelle: sauvegardes vérifiées, contrôle logs, tests rapides.
Points clés à retenir
- Cette erreur est souvent liée à un changement de credentials ou à une indisponibilité MySQL.
- Le diagnostic commence par
wp-config.phpet les logs, pas par une restauration. - Une fois remis en ligne, vérifier les tables et mettre du monitoring évite les surprises.