Introduction
Cet article s’adresse aux utilisateurs qui tentent de se connecter à MySQL avec un mot de passe correct mais qui obtiennent une erreur : « Erreur 1045 : Accès refusé pour l’utilisateur (utilisant le mot de passe : OUI) »
Si vous avez oublié votre mot de passe racine MySQL, veuillez consulter cet article :
- Comment réinitialiser le mot de passe racine de MySQL.
Si vous essayez de vous connecter en tant que root via phpMyAdmin, veuillez consulter :
- Can’t log into phpMyAdmin : mysqli_real_connect() : (HY000/1698) : Accès refusé pour l’utilisateur ‘root’@’localhost’
Comprendre les utilisateurs et les hôtes MySQL
MySQL restreint l’accès des utilisateurs en fonction de la valeur host
d’un utilisateur. Par défaut, la valeur host
pour le compte root et les nouveaux utilisateurs est définie sur localhost
, ce qui signifie que vous ne pouvez vous connecter que via la machine locale ou via phpMyAdmin s’il est installé sur le même localhost. Si vous essayez de vous connecter à un compte localhost
à distance, il peut rejeter votre mot de passe correct avec « Access denied for user (using password : YES) ».
Si nous regardons cette simple liste d’utilisateurs MySQL ci-dessous à titre d’exemple :
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Au-dessus, nous avons trois utilisateurs MySQL avec différentes valeurs host
.
Regardons quelques scénarios où votre mot de passe correct peut être rejeté en fonction de la valeur host
:
- User
- ✅ Peut se connecter depuis le
localhost
, c’est-à-dire la machine sur laquelle le service MySQL est exécuté. - ✅ Peut se connecter depuis phpMyAdmin s’il est installé sur le même localhost.
- ❌Ne peut pas se connecter à distance et obtiendra « Accès refusé pour l’utilisateur (utilisant le mot de passe : YES) ».
- ✅ Peut se connecter depuis le
- User
- ✅ Ne peut se connecter que depuis l’adresse IP
10.0.53.185
. - ❌ Ne peut se connecter depuis une autre adresse IP « Accès refusé pour l’utilisateur (utilisation du mot de passe : OUI) ».
- ❌ Impossible de se connecter depuis localhost « Access denied for user (using password : YES) ».
- ❌ Impossible de se connecter depuis phpMyAdmin « Access denied for user (using password : YES) ».
- ✅ Ne peut se connecter que depuis l’adresse IP
- User
%
- ✅ Peut se connecter de n’importe où (
%
est un caractère générique).
- ✅ Peut se connecter de n’importe où (
Changement de la valeur d’hôte d’un utilisateur MySQL
Vous pouvez changer la valeur d’hôte d’un utilisateur utilisant le compte racine MySQL ou tout compte ayant des privilèges de superutilisateur. Cela peut être fait via la ligne de commande ou phpMyAdmin.
Via Command Line
Vous devrez accéder à votre base de données MySQL en utilisant root ou un superutilisateur qui a accès à la table MySQL Users.
Le compte root est par défaut uniquement accessible depuis localhost, vous pouvez donc obtenir « Access denied for user (using password : YES) » si vous essayez de vous connecter à distance. Dans cette éventualité, vous devrez d’une manière ou d’une autre obtenir un accès local au serveur.
Pour vous connecter à une base de données MySQL locale :
mysql -u root -p
Pour vous connecter à une base de données MySQL distante, remplacez simplement hostname_or_ip
par la vôtre.
mysql -u root -h hostname_or_ip -p
Une fois connecté à MySQL, listez tous les utilisateurs MySQL et leurs hôtes correspondants dans votre base de données.
SELECT User,Host FROM mysql.user;
Résultat:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Au-dessus, nous pouvons voir une liste des utilisateurs MySQL et de leurs hôtes.
Si nous voulons nous connecter à l’aide de test-user1
à distance de n’importe où, nous devons changer la valeur de l’hôte par le caractère générique %
, qui permettra la connexion à distance de n’importe où. Pour une sécurité accrue, vous pourriez changer cela en une adresse IP.
Dans l’exemple ci-dessous, nous changeons l’hôte pour test-user1
de localhost
à %
%
signifie joker et permettra à cet utilisateur de se connecter à distance de n’importe où.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Vous devez vider les privilèges MySQL pour que les changements prennent effet.
FLUSH PRIVILEGES;
Essayez maintenant de vous connecter à nouveau à distance.
Via phpMyAdmin
Connectez-vous à phpMyAdmin en utilisant votre compte root ou un compte avec des privilèges de superutilisateur.
- Une fois connecté à phpMyadmin, cliquez sur la base de données
mysql
dans la colonne de gauche. - Cliquez sur l’onglet SQL.
- Tapez ou collez dans la boîte de requête SQL :
SELECT User,Host FROM mysql.user;
pour lister tous les utilisateurs MySQL de la base de données. - Cliquez sur Go pour exécuter la requête.
Vous devriez maintenant voir une liste de tous les utilisateurs MySQL et de leurs hôtes correspondants.
Pour modifier la valeur de l’hôte d’un utilisateur MySQl :
- Double-cliquez sur le champ de l’hôte à côté de l’utilisateur que vous souhaitez modifier (en rouge ci-dessous).
- Tapez
%
pour permettre à quiconque de se connecter à cet utilisateur de n’importe où. Vous pourriez également le changer en une IP distante pour une meilleure sécurité. - Appuyez sur
ENTER
sur votre clavier pour enregistrer les modifications.
Vous n’avez pas encore terminé. Vous devez maintenant purger les privilèges MySQL.
- Cliquez à nouveau sur l’onglet SQL
- Tapez ou collez dans la boîte de requête SQL :
FLUSH PRIVILEGES;
- Cliquez sur Go pour exécuter la requête.
Vous devriez maintenant pouvoir vous connecter à distance.
Dites-moi si cela vous a aidé. Suivez-moi sur Twitter, Facebook et YouTube, ou 🍊 achetez-moi un smoothie.
p.s. J’ai augmenté mes revenus AdSense de 200% en utilisant AI 🤖. Lisez ma revue Ezoic pour découvrir comment.