L’erreur « Erreur lors de la connexion à la base de données » se produit lorsque MySQL ou MariaDB ne parvient pas à établir la connexion entre l’ap­pli­ca­tion et la base de données. Elle résulte le plus souvent d’iden­ti­fiants in­cor­rects, d’un serveur de base de données arrêté ou d’une erreur de con­fi­gu­ra­tion.

Erreur lors de la connexion à la base de données : que signifie ce message ?

Le message « Erreur lors de la connexion à la base de données » (Error Es­ta­bli­shing a Database Con­nec­tion) signifie qu’une ap­pli­ca­tion, par exemple un site Web PHP, n’a pas réussi à établir une connexion avec la base de données MySQL ou MariaDB. Les causes les plus fré­quentes sont des iden­ti­fiants invalides, par exemple un nom d’uti­li­sa­teur ou un mot de passe incorrect, un serveur de base de données à l’arrêt, ou une mauvaise con­fi­gu­ra­tion serveur. Des problèmes réseau, comme des ports bloqués ou une adresse d’hôte erronée, peuvent aussi dé­clen­cher ce message. Dans les systèmes de gestion de contenu comme WordPress, l’erreur est affichée di­rec­te­ment si la base de données est inac­ces­sible. Dans ce cas, l’accès à l’ensemble du site Web est en général bloqué, car ni le char­ge­ment ni l’en­re­gis­tre­ment des contenus n’est possible.

Comment corriger une erreur de connexion à la base de données dans MySQL/MariaDB ?

Si vous ne pouvez pas vous connecter à votre base de données, cela peut avoir plusieurs causes. Les solutions suivantes décrivent les étapes à vérifier pour iden­ti­fier l’origine de l’échec de la connexion dans votre situation.

Solution 1 : s’assurer que MySQL/MariaDB fonc­tionne cor­rec­te­ment

Si MySQL ou MariaDB est arrêté, les scripts et les pages Web ne peuvent plus établir de connexion. Sur un serveur Linux, vous pouvez vérifier si MySQL est en cours d’exécution avec la commande suivante :

ps aux | grep mysql

La commande renvoie une liste des processus actifs qui con­tien­nent « mysql » dans leur nom. Cette liste inclut aussi la commande que vous venez d’exécuter. Si MySQL est en cours d’exécution, le processus MySQL y apparaît.

Image: Capture d’écran du processus MySQL
Vous pouvez vérifier dans la sortie si MySQL/MariaDB est en cours d’exécution.

Si MySQL/MariaDB n’est pas en cours d’exécution, seule votre commande grep s’affiche.

Exécutez uni­que­ment la commande cor­res­pon­dant à votre service (MySQL ou MariaDB) avec les commandes suivantes :

# Ubuntu
systemctl start mysql
systemctl start mariadb
# CentOS
systemctl start mysqld
systemctl start mariadb

Assurez-vous d’utiliser le bon nom d’uti­li­sa­teur et le bon mot de passe. Ces iden­ti­fiants ont été définis lors de la création de la base de données MySQL. Vérifiez également que le nom d’hôte est cor­rec­te­ment configuré.

Solution 2 : tester la connexion à la base de données MySQL/MariaDB

Une fois que vous avez confirmé que MySQL/MariaDB fonc­tionne, la prochaine étape consiste à tester la connexion depuis la ligne de commande avec la commande suivante :

mysql -u root -p

Vous serez invité à saisir le mot de passe de l’uti­li­sa­teur root. Par défaut, ce mot de passe cor­res­pond au mot de passe root initial de votre serveur.

Note

Si vous modifiez le mot de passe root du serveur, cela ne change pas le mot de passe root de MySQL.

Après avoir entré le mot de passe, vous accédez au client MySQL/MariaDB. Celui-ci se présente par exemple comme suit :

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 9.4.0 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Si vous ne parvenez pas à établir une connexion MySQL avec un autre nom d’uti­li­sa­teur ou mot de passe, répétez le test en rem­pla­çant root par le nom d’uti­li­sa­teur concerné.

Solution 3 : contrôler les iden­ti­fiants de connexion MySQL/MariaDB

Si les iden­ti­fiants saisis sont in­cor­rects, un message d’erreur similaire à celui-ci s’affiche :

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Assurez-vous que le nom d’uti­li­sa­teur affiché dans la requête, ainsi que le mot de passe que vous avez saisi, sont cor­rec­te­ment or­tho­gra­phiés. Gardez à l’esprit que MySQL fait la dis­tinc­tion entre ma­jus­cules et mi­nus­cules : « Root » n’est pas identique à « root ».

Vérifiez donc at­ten­ti­ve­ment l’or­tho­graphe et la casse du nom d’uti­li­sa­teur. Pour afficher la liste complète des uti­li­sa­teurs MySQL/MariaDB, connectez-vous en tant que root dans le client de ligne de commande avec la commande suivante :

mysql -u root -p

Ensuite, listez tous les uti­li­sa­teurs MySQL et leurs hôtes avec la commande suivante :

SELECT host, user FROM mysql.user;

La commande affiche le nom d’uti­li­sa­teur exac­te­ment tel qu’il a été créé. La colonne Host indique en outre depuis quel em­pla­ce­ment cet uti­li­sa­teur est autorisé à se connecter.

Solution 4 : réi­ni­tia­li­ser le mot de passe d’un uti­li­sa­teur MySQL/MariaDB

Note

Soyez par­ti­cu­liè­re­ment vigilant lors de la réi­ni­tia­li­sa­tion du mot de passe de l’uti­li­sa­teur root. Suivez at­ten­ti­ve­ment les ins­truc­tions ci-dessous afin d’éviter de modifier ou de supprimer le mauvais mot de passe.

Si le problème ne vient pas de l’or­tho­graphe du nom d’uti­li­sa­teur, il peut être lié à un mot de passe invalide. Pour réi­ni­tia­li­ser le mot de passe MySQL/MariaDB d’un uti­li­sa­teur, connectez-vous au client en ligne de commande en tant que root à l’aide de la commande suivante :

mysql -u root -p

Ensuite, réi­ni­tia­li­sez le mot de passe de l’uti­li­sa­teur concerné avec la commande :

ALTER USER 'NomUtilisateur'@'localhost' IDENTIFIED BY 'NouveauMotDePasse';
FLUSH PRIVILEGES;

Remplacez NouveauMotDePasse par le nouveau mot de passe et NomUtilisateur par le nom d’uti­li­sa­teur.

Solution 5 : vérifier les au­to­ri­sa­tions de l’uti­li­sa­teur MySQL/MariaDB

Si vous êtes sûr que le nom d’uti­li­sa­teur et le mot de passe sont corrects, le problème peut provenir du fait que l’uti­li­sa­teur ne dispose pas des bonnes au­to­ri­sa­tions (grants) pour cette base de données.

Pour vérifier les au­to­ri­sa­tions d’un uti­li­sa­teur, connectez-vous au client en ligne de commande en tant que root avec la commande :

mysql -u root -p

Ensuite, affichez les au­to­ri­sa­tions de l’uti­li­sa­teur avec la commande :

SHOW GRANTS FOR 'NomUtilisateur'@'localhost';

Remplacez NomUtilisateur par le nom d’uti­li­sa­teur. Changez éven­tuel­le­ment localhost en le nom d’hôte. Vous devriez obtenir une liste des pri­vi­lèges que l’uti­li­sa­teur possède pour la base de données res­pec­tive. Cela devrait res­sem­bler ap­proxi­ma­ti­ve­ment à ceci :

+-------------------------------------------------------------+
| Grants for NomUtilisateur@localhost                                 |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `NomUtilisateur`@`localhost`                  |
| GRANT ALL PRIVILEGES ON `reviews`.* TO `NomUtilisateur`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0,004 sec)

Notez que cet uti­li­sa­teur a toutes les au­to­ri­sa­tions pour une base de données appelée reviews.

Si aucune au­to­ri­sa­tion n’a été attribuée à l’uti­li­sa­teur pour une base de données, vous verrez seulement quelque chose comme ceci :

+--------------------------------------------+
| Grants for NomUtilisateur@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `NomUtilisateur`@`localhost` |
+--------------------------------------------+
1 row in set (0,001 sec)

Notez que cet uti­li­sa­teur ne dispose que des au­to­ri­sa­tions USAGE sur . et n’a aucun droit d’accès sur les bases de données. Cela peut être à l’origine de l’erreur d’accès.

Solution 6 : tester la connexion MySQL/MariaDB depuis le na­vi­ga­teur Web

Même si MySQL ou MariaDB fonc­tion­nent lo­ca­le­ment, des problèmes peuvent ap­pa­raître dans l’en­vi­ron­ne­ment Web. Un test rapide depuis le na­vi­ga­teur permet de vérifier la connexion et de détecter d’éven­tuelles erreurs d’accès dès le départ. Pour cela, créez un fichier nommé database-connection-test.php contenant le code suivant :

<?php
$test_connect = mysqli_connect('localhost', 'root', 'MotDePasse');
if (!$test_connect) {
    die('Connexion impossible : ' . mysqli_connect_error());
}
echo 'Connexion à la base de données réussie.';
mysqli_close($test_connect);
?>

Remplacez le mot MotDePasse par le mot de passe root.

Placez ensuite ce fichier dans votre ré­per­toire Web, puis ouvrez-le dans un na­vi­ga­teur. Si la connexion avec le nom d’uti­li­sa­teur root et le mot de passe fonc­tionne, cela signifie que votre base de données accepte les con­nexions.

Si vous ne parvenez pas à établir une connexion MySQL/MariaDB avec un autre nom d’uti­li­sa­teur ou mot de passe, répétez le test en rem­pla­çant root par le nom d’uti­li­sa­teur concerné et le mot de passe par celui cor­res­pon­dant.

Note

Pensez à supprimer ce fichier une fois les tests terminés.

Solution 7 : contrôler le pare-feu et les ports

Même si MySQL ou MariaDB fonc­tion­nent cor­rec­te­ment et que les iden­ti­fiants sont valides, un pare-feu peut bloquer la connexion. Par défaut, MySQL utilise le port 3306 pour les con­nexions entrantes. Vérifiez d’abord si ce port est ouvert. Sur un système Linux, utilisez les commandes suivantes :

sudo netstat -tulnp | grep 3306
# Sur les systèmes avec ufw (Ubuntu)
sudo ufw status

Si le pare-feu bloque le port, vous pouvez l’autoriser spé­ci­fi­que­ment avec la commande suivante :

# Ubuntu avec ufw
sudo ufw allow 3306/tcp
sudo ufw reload
# CentOS ou RHEL avec firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

Veillez à n’ouvrir le port qu’aux adresses IP qui né­ces­si­tent réel­le­ment un accès. L’ouverture à toutes les adresses re­pré­sente un risque pour la sécurité. Après avoir ajusté le pare-feu, votre ap­pli­ca­tion devrait pouvoir se re­con­nec­ter à la base de données MySQL/MariaDB. Vérifiez le bon fonc­tion­ne­ment à l’aide du script de test PHP ou di­rec­te­ment depuis la console.

Aller au menu principal