ERREUR 1698 (28000) : Accès refusé pour l'utilisateur 'root'@'localhost' ;
Je suis en train de mettre en place un nouveau serveur et je rencontre toujours ce problème.
Lorsque j'essaie de me connecter à la base de données MySQL avec l'utilisateur root, j'obtiens l'erreur suivante :
ERROR 1698 (28000) : Accès refusé pour l'utilisateur 'root'@'localhost' ;
Peu importe que je me connecte via le terminal (SSH), via PHPMyAdmin ou un client MySQL, par exemple Navicat. Ils échouent tous.
J'ai regardé dans la table mysql.user et j'obtiens ce qui suit :
+------------------+-------------------+
| user | host |
+------------------+-------------------+
| root | % |
| root | 127.0.0.1 |
| amavisd | localhost |
| debian-sys-maint | localhost |
| iredadmin | localhost |
| iredapd | localhost |
| mysql.sys | localhost |
| phpmyadmin | localhost |
| root | localhost |
| roundcube | localhost |
| vmail | localhost |
| vmailadmin | localhost |
| amavisd | test4.folkmann.it |
| iredadmin | test4.folkmann.it |
| iredapd | test4.folkmann.it |
| roundcube | test4.folkmann.it |
| vmail | test4.folkmann.it |
| vmailadmin | test4.folkmann.it |
+------------------+-------------------+
Comme vous pouvez le voir, root devrait avoir l'accès.
Le serveur est assez simple, car j'ai essayé de résoudre ce problème depuis un moment maintenant...
Il tourne sous Ubuntu 16.04.1 LTS avec Apache, MySQL et PHP, pour pouvoir héberger des sites web, et iRedMail 0.9.5-1, pour pouvoir héberger du courrier.
La connexion à la base de données MySQL fonctionne bien avant que j'installe iRedMail. J'ai également essayé d'installer simplement iRedMail, mais en tant que root, cela ne fonctionne pas non plus...
Si quelqu'un pouvait me dire comment résoudre mon problème de connexion à MySQL ou comment installer iRedMail par-dessus une installation MySQL existante. Et oui, j'ai essayé les [Conseils d'installation][1] et je ne trouve pas ces variables dans les fichiers de configuration.
[1] : https://code.google.com/archive/p/iredmail/wikis/Installation_Tips.wiki
Sur certains systèmes comme Ubuntu, mysql utilise par défaut le [plugin UNIX auth_socket][1].
En gros, cela signifie que : les utilisateurs de la base de données qui l'utilisent, seront "auth" ; par l'utilisateur système crédentias. Vous pouvez voir si votre utilisateur
root
est configuré comme cela en faisant ce qui suit :Comme vous pouvez le voir dans la requête, l'utilisateur
root
utilise le pluginauth_socket
.Il y a deux façons de résoudre ce problème :
mysql_native_password
.db_user
avec votresystem_user
(recommandé).Option 1
Option 2: (remplacer YOUR_SYSTEM_USER par le nom d'utilisateur que vous avez)
Rappelez-vous que si vous utilisez l'option 2, vous devrez vous connecter à mysql avec votre nom d'utilisateur système (
mysql -u VOTRE_USER_SYSTEM
).Note: Sur certains systèmes (par exemple, Debian stretch) le plugin 'auth_socket' ; est appelé 'unix_socket' ;, donc la commande SQL correspondante devrait être :
UPDATE user SET plugin='unix_socket' ; WHERE User='YOUR_SYSTEM_USER';
[1] : https://dev.mysql.com/doc/mysql-security-excerpt/5.5/en/socket-pluggable-authentication.html
Mise à jour: D'après le commentaire de @andy's, il semble que mysql 8.x.x ait mis à jour/remplacé le
auth_socket
pourcaching_sha2_password
. Je n'ai pas de système configuré avec mysql 8.x.x pour tester cela, mais les étapes ci-dessus devraient vous aider à comprendre le problème. Voici la réponse :Une modification apportée à MySQL 8.0.4 est que le nouveau plugin d'authentification par défaut est 'caching_sha2_password' ;. Le nouveau 'YOUR_SYSTEM_USER' ; aura ce plugin d'authentification et vous pouvez maintenant vous connecter depuis le shell bash avec "mysql -u YOUR_SYSTEM_USER -p" ; et fournir le mot de passe de cet utilisateur à l'invite. L'étape "UPDATE user SET plugin" ; n'est pas nécessaire. Pour la mise à jour du plugin d'authentification par défaut de la version 8.0.4, voir https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/.
Je vous suggère de supprimer la connexion Mysql.
UPDATE - Ceci est pour Mysql version 5.5, si votre version est différente, veuillez modifier la première ligne en conséquence.
Et installez à nouveau, mais cette fois, définissez vous-même un mot de passe root. Cela vous épargnera beaucoup d'efforts.
Vous voulez accéder à MySQL avec l'utilisateur root mais vous ne fournissez pas le mot de passe correct de root.
Si vous devez définir un nouveau mot de passe pour root, le site de MySQL propose une excellente documentation sur la façon de procéder : http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html.
Je ne montrerai pas le processus ici car la documentation de MySQL sur le lien ci-dessus est claire et concise.