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’application et la base de données. Elle résulte le plus souvent d’identifiants incorrects, d’un serveur de base de données arrêté ou d’une erreur de configuration.

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 Establishing a Database Connection) signifie qu’une application, 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 identifiants invalides, par exemple un nom d’utilisateur ou un mot de passe incorrect, un serveur de base de données à l’arrêt, ou une mauvaise configuration serveur. Des problèmes réseau, comme des ports bloqués ou une adresse d’hôte erronée, peuvent aussi déclencher ce message. Dans les systèmes de gestion de contenu comme WordPress, l’erreur est affichée directement si la base de données est inaccessible. Dans ce cas, l’accès à l’ensemble du site Web est en général bloqué, car ni le chargement ni l’enregistrement 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 identifier l’origine de l’échec de la connexion dans votre situation.

Solution 1 : s’assurer que MySQL/MariaDB fonctionne correctement

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 contiennent « 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 uniquement la commande correspondant à 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’utilisateur et le bon mot de passe. Ces identifiants 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 correctement configuré.

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

Une fois que vous avez confirmé que MySQL/MariaDB fonctionne, 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’utilisateur root. Par défaut, ce mot de passe correspond 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’utilisateur ou mot de passe, répétez le test en remplaçant root par le nom d’utilisateur concerné.

Solution 3 : contrôler les identifiants de connexion MySQL/MariaDB

Si les identifiants saisis sont incorrects, 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’utilisateur affiché dans la requête, ainsi que le mot de passe que vous avez saisi, sont correctement orthographiés. Gardez à l’esprit que MySQL fait la distinction entre majuscules et minuscules : « Root » n’est pas identique à « root ».

Bouton d'achat pour les réseaux sociaux
Convertissez vos followers en acheteurs
  • Vendez sur les réseaux sociaux en un clin d’œil
  • Gérez tout depuis une interface unique
  • Proposez tous types de produits et services à la vente

Vérifiez donc attentivement l’orthographe et la casse du nom d’utilisateur. Pour afficher la liste complète des utilisateurs 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 utilisateurs MySQL et leurs hôtes avec la commande suivante :

SELECT host, user FROM mysql.user;

La commande affiche le nom d’utilisateur exactement tel qu’il a été créé. La colonne Host indique en outre depuis quel emplacement cet utilisateur est autorisé à se connecter.

Solution 4 : réinitialiser le mot de passe d’un utilisateur MySQL/MariaDB

Note

Soyez particulièrement vigilant lors de la réinitialisation du mot de passe de l’utilisateur root. Suivez attentivement les instructions ci-dessous afin d’éviter de modifier ou de supprimer le mauvais mot de passe.

Si le problème ne vient pas de l’orthographe du nom d’utilisateur, il peut être lié à un mot de passe invalide. Pour réinitialiser le mot de passe MySQL/MariaDB d’un utilisateur, connectez-vous au client en ligne de commande en tant que root à l’aide de la commande suivante :

mysql -u root -p

Ensuite, réinitialisez le mot de passe de l’utilisateur 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’utilisateur.

Solution 5 : vérifier les autorisations de l’utilisateur MySQL/MariaDB

Si vous êtes sûr que le nom d’utilisateur et le mot de passe sont corrects, le problème peut provenir du fait que l’utilisateur ne dispose pas des bonnes autorisations (grants) pour cette base de données.

Pour vérifier les autorisations d’un utilisateur, connectez-vous au client en ligne de commande en tant que root avec la commande :

mysql -u root -p

Ensuite, affichez les autorisations de l’utilisateur avec la commande :

SHOW GRANTS FOR 'NomUtilisateur'@'localhost';

Remplacez NomUtilisateur par le nom d’utilisateur. Changez éventuellement localhost en le nom d’hôte. Vous devriez obtenir une liste des privilèges que l’utilisateur possède pour la base de données respective. Cela devrait ressembler approximativement à 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 utilisateur a toutes les autorisations pour une base de données appelée reviews.

Si aucune autorisation n’a été attribuée à l’utilisateur 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 utilisateur ne dispose que des autorisations 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 navigateur Web

Même si MySQL ou MariaDB fonctionnent localement, des problèmes peuvent apparaître dans l’environnement Web. Un test rapide depuis le navigateur permet de vérifier la connexion et de détecter d’éventuelles 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épertoire Web, puis ouvrez-le dans un navigateur. Si la connexion avec le nom d’utilisateur root et le mot de passe fonctionne, cela signifie que votre base de données accepte les connexions.

Si vous ne parvenez pas à établir une connexion MySQL/MariaDB avec un autre nom d’utilisateur ou mot de passe, répétez le test en remplaçant root par le nom d’utilisateur concerné et le mot de passe par celui correspondant.

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 fonctionnent correctement et que les identifiants sont valides, un pare-feu peut bloquer la connexion. Par défaut, MySQL utilise le port 3306 pour les connexions 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écifiquement 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écessitent réellement un accès. L’ouverture à toutes les adresses représente un risque pour la sécurité. Après avoir ajusté le pare-feu, votre application devrait pouvoir se reconnecter à la base de données MySQL/MariaDB. Vérifiez le bon fonctionnement à l’aide du script de test PHP ou directement depuis la console.

Cet article vous a-t-il été utile ?
Aller au menu principal