Pourquoi mon site WordPress ne se connecte-t-il pas à la base de données distante ? Causes et solutions

Pourquoi mon site WordPress ne se connecte-t-il pas à la base de données distante ? Pourquoi mon site WordPress ne se connecte-t-il pas à la base de données distante ? image
4.7/5 - (1327 votes)

Comprendre l’erreur de connexion à la base de données distante sous WordPress

Lorsque votre site WordPress affiche le message « Erreur lors de l’établissement de la connexion à la base de données », cela signifie que WordPress ne parvient pas à communiquer avec votre base de données distante. Cette erreur peut paralyser entièrement votre site, rendant inaccessible à la fois le front-end et l’interface d’administration. Dans cet article, nous allons explorer en détail les causes possibles et vous fournir des solutions concrètes pour rétablir la connexion.

Les causes fréquentes de l’échec de connexion à la base de données distante

Plusieurs facteurs peuvent empêcher WordPress de se connecter à une base de données distante. Voici les plus courants :

  • Informations de connexion erronées : le nom de la base de données, l’utilisateur, le mot de passe ou l’hôte sont incorrects dans le fichier wp-config.php.
  • Problèmes de réseau ou de pare-feu : l’hébergement distant bloque les connexions entrantes sur le port MySQL (3306).
  • Le serveur de base de données est en panne ou surchargé : le service MySQL est arrêté ou ne répond plus.
  • Permissions insuffisantes : l’utilisateur de la base de données n’a pas les droits nécessaires pour accéder à la base depuis l’adresse IP de votre site.
  • Limitation des connexions distantes : le serveur MySQL n’autorise pas les connexions depuis des hôtes distants.

Vérifier les informations de connexion dans wp-config.php

La première étape consiste à examiner le fichier wp-config.php situé à la racine de votre installation WordPress. Ouvrez-le avec un éditeur de texte et vérifiez les lignes suivantes :

define('DB_NAME', 'nom_de_votre_base');
define('DB_USER', 'utilisateur');
define('DB_PASSWORD', 'mot_de_passe');
define('DB_HOST', 'adresse_du_serveur');

Assurez-vous que le DB_HOST correspond bien à l’adresse de votre serveur de base de données distant. Il peut s’agir d’une adresse IP (ex. 192.168.1.10) ou d’un nom d’hôte (ex. db.example.com). Si vous utilisez un hébergement mutualisé, le champ peut être localhost ou une adresse spécifique fournie par votre hébergeur.

Erreur fréquente : confondre hôte local et hôte distant

Si votre base de données est sur un serveur différent de votre site WordPress, vous devez spécifier l’adresse IP ou le nom de domaine du serveur de base de données. Ne mettez pas localhost dans ce cas.

Vérifier la disponibilité du serveur de base de données distant

Le serveur MySQL peut être temporairement indisponible. Pour le vérifier, connectez-vous en SSH ou via un outil comme phpMyAdmin. Si vous n’y avez pas accès, contactez votre hébergeur. Vous pouvez également utiliser la commande suivante depuis un terminal :

mysql -h adresse_du_serveur -u utilisateur -p

Si la connexion échoue, le serveur est probablement hors service. Dans ce cas, patientez ou contactez le support technique.

Configurer les autorisations de l’utilisateur MySQL

L’utilisateur de la base de données doit être autorisé à se connecter depuis l’adresse IP de votre site WordPress. Pour cela, connectez-vous à MySQL en tant qu’administrateur et exécutez :

GRANT ALL PRIVILEGES ON nom_base.* TO 'utilisateur'@'ip_du_site' IDENTIFIED BY 'mot_de_passe';
FLUSH PRIVILEGES;

Remplacez ip_du_site par l’adresse IP publique de votre serveur WordPress. Si l’IP est dynamique, vous pouvez utiliser '%' pour autoriser toutes les adresses (moins sécurisé).

Autoriser les connexions distantes dans MySQL

Par défaut, MySQL n’écoute que sur localhost. Pour autoriser les connexions distantes, modifiez le fichier de configuration my.cnf (souvent dans /etc/mysql/my.cnf ou /etc/mysql/mysql.conf.d/mysqld.cnf). Cherchez la ligne :

bind-address = 127.0.0.1

Remplacez-la par :

bind-address = 0.0.0.0

Ou par l’adresse IP spécifique de votre serveur. Redémarrez ensuite MySQL :

sudo service mysql restart

Vérifier les règles du pare-feu

Le pare-feu du serveur de base de données peut bloquer les connexions entrantes sur le port 3306. Pour vérifier les règles iptables (Linux) :

sudo iptables -L -n

Si le port 3306 n’est pas ouvert, ajoutez une règle :

sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

Pour les pare-feu comme UFW (Uncomplicated Firewall) :

sudo ufw allow 3306/tcp

N’oubliez pas de sauvegarder les règles si nécessaire.

Utiliser un nom d’hôte au lieu d’une adresse IP

Parfois, le problème vient de la résolution DNS. Essayez d’utiliser le nom d’hôte du serveur de base de données (ex. db.example.com) au lieu de son adresse IP dans le champ DB_HOST. Vous pouvez également tester la résolution avec la commande ping ou nslookup.

Vérifier les logs d’erreur

Les logs de WordPress et de MySQL fournissent des indices précieux. Activez le débogage dans WordPress en ajoutant dans wp-config.php :

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

Consultez ensuite le fichier wp-content/debug.log. Pour les logs MySQL, regardez dans /var/log/mysql/error.log ou /var/log/mysqld.log.

Solutions avancées : utiliser un tunnel SSH

Si votre hébergeur ne permet pas les connexions directes à MySQL, vous pouvez créer un tunnel SSH. Depuis votre serveur WordPress, exécutez :

ssh -L 3307:localhost:3306 utilisateur@serveur_bdd

Puis, dans wp-config.php, définissez DB_HOST comme 127.0.0.1:3307. Cela redirige le trafic local vers la base de données distante via SSH.

Contacter l’hébergeur

Si après toutes ces vérifications le problème persiste, contactez le support de votre hébergeur. Expliquez que votre site WordPress ne se connecte pas à la base de données distante et fournissez les étapes déjà réalisées. L’hébergeur pourra vérifier la configuration réseau et les autorisations au niveau de son infrastructure.

Prévenir les futures erreurs de connexion

  • Utilisez un monitoring de base de données pour être alerté en cas d’indisponibilité.
  • Gardez une copie locale de votre fichier wp-config.php avec les bonnes informations.
  • Documentez les adresses IP et les accès pour faciliter le dépannage.
  • Mettez en place une redondance ou un failover si la criticité du site le justifie.

Résumé des causes et solutions

Cause Solution
Informations erronées dans wp-config.php Vérifier et corriger DB_NAME, DB_USER, DB_PASSWORD, DB_HOST
Serveur MySQL inaccessible Contacter l’hébergeur, vérifier les logs
Permissions utilisateur MySQL Accorder les privilèges depuis l’IP du site
Bind-address limité à localhost Modifier my.cnf et redémarrer MySQL
Pare-feu bloquant le port 3306 Ouvrir le port dans iptables/UFW
Problème DNS Utiliser l’adresse IP ou un nom d’hôte valide

En suivant ces étapes méthodiquement, vous devriez pouvoir résoudre l’erreur de connexion à la base de données distante sur votre site WordPress. N’oubliez pas de toujours tester chaque modification et de conserver une sauvegarde de votre configuration.

Photo by Patrick Fore on Unsplash

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *