590 votes

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 :

ERREUR 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 y avoir accès.

Le serveur est assez simple, car j'ai essayé de résoudre ce problème depuis un certain temps maintenant

Il fonctionne 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 aussi essayé, juste en installant iRedMail, mais ensuite Root, ne fonctionne pas non plus...

Si quelqu'un pouvait me dire comment résoudre mon problème de connexion MySQL ou comment installer iRedMail, en plus d'une installation MySQL existante. Et oui, j'ai essayé le Conseils d'installation et je ne trouve pas ces variables dans les fichiers de configuration.

4 votes

J'ai suivi ce lien et la première option a fonctionné pour moi : askubuntu.com/questions/763336/

19 votes

sudo mysql_secure_installation est le moyen le plus simple de résoudre ce problème

1637voto

zetacu Points 5474

Sur certains systèmes comme Ubuntu, mysql utilise par défaut l'option Plugin auth_socket UNIX .

Cela signifie essentiellement que : Les utilisateurs de db_users qui l'utilisent seront "authentifiés" par les justificatifs d'identité de l'utilisateur du système. Vous pouvez voir si votre root L'utilisateur est configuré de la manière suivante :

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

Comme vous pouvez le voir dans la requête, l'élément root l'utilisateur utilise le auth_socket plugin

Il y a deux façons de résoudre ce problème :

  1. Vous pouvez configurer l'utilisateur Root pour qu'il utilise l'option mysql_native_password plugin
  2. Vous pouvez créer un nouveau db_user avec vous system_user (recommandé)

Option 1 :

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ sudo service mysql restart

Option 2 : (remplacez YOUR_SYSTEM_USER par le nom d'utilisateur que vous avez)

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ sudo service mysql restart

Rappelez-vous que si vous utilisez l'option #2, vous devrez vous connecter à mysql avec votre nom d'utilisateur système ( mysql -u YOUR_SYSTEM_USER )

Note : Sur certains systèmes (par exemple, Debian stretch), le plugin 'auth_socket' s'appelle unix_socket donc la commande SQL correspondante devrait être : UPDATE user SET plugin='unix_socket' WHERE User='YOUR_SYSTEM_USER';

Mise à jour : D'après le commentaire d'@andy, il semble que mysql 8.x.x ait mis à jour/remplacé le fichier d'aide à l'écriture. auth_socket pour caching_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 :

_L'une des modifications apportées par 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 plus nécessaire. Pour la mise à jour du plugin d'authentification par défaut 8.0.4, voir, https://mysqlserverteam.com/mysql-8-0-4-new-default-authentication-plugin-caching_sha2_password/_

9 votes

L'option 1 a fonctionné pour moi. Mais je devais aussi exécuter sudo gedit /etc/phpmyadmin/config.inc.php . Puis j'ai fait une recherche pour AllowNoPassword et décommenté les deux lignes qui le contenaient. Ensuite, j'ai pu me connecter en tant que Root sans mot de passe.

1 votes

Cet article du blog percona m'a un peu aidé. percona.com/blog/2016/03/16/ Il semble que cela se produise si vous essayez de ne pas définir de mot de passe pour Root, ce qui amène le 'auth_plugin' à utiliser le auth_socket unix, qui apparemment ne fait que comparer les utilisateurs.

10 votes

L'option 2 fonctionne. Je pense que c'est toujours la meilleure pratique de créer un nouvel utilisateur et d'utiliser le départ de Root pour être là !

343voto

Nandesh Points 503

La NOUVELLE version de MYSQL le fait de cette façon.

Dans le nouveau mon-sql si le mot de passe est laissé vide lors de l'installation, alors il est basé sur le nom de l'utilisateur. auth_socket plugin.

La bonne façon de procéder est de se connecter à my-sql avec sudo privilège.

$ sudo mysql -u root -p

Et ensuite mettre à jour le mot de passe en utilisant :

$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

Une fois que c'est fait stop and start le serveur mysql.

$  sudo service mysql stop
$  sudo service mysql start

Pour plus de détails, vous pouvez vous référer à ce lien .

1 votes

Cela a fonctionné pour mon serveur de développement comme une solution rapide (serveur Ubuntu 18.04), cependant, je recommande de regarder la réponse acceptée ci-dessus, et en outre, s'abstenir d'installer PHPMyAdmin sur un serveur de production tout à fait.

3 votes

"-p" n'est pas nécessaire lorsque l'on utilise "sudo".

3 votes

Wow, ça a marché pour moi, mysql Ver 8.0.25-0ubuntu0.20.04.1, #nitipSendal

14voto

Tahir Khalid Points 721

J'avais ce problème sur une VM Debian 8 avec laquelle j'interagissais via Putty sur mon bureau Windows 10.

J'ai essayé les différentes suggestions ici mais rien n'a fonctionné et j'utilise MariaDB sur l'hôte Debian. Finalement, j'ai constaté que je ne pouvais pas démarrer le serveur de données en mode sans échec, mais je n'en ai pas eu besoin et les commandes suivantes ont fonctionné pour moi, c'est-à-dire qu'elles ont permis à un utilisateur MySql nouvellement créé de se connecter au serveur MySql/MariaDB :

sudo service mysql restart
sudo mysql # logs in automatically into MariaDB
use mysql;
update user set plugin='' where user='your_user_name';
flush privileges;
exit;
sudo service mysql restart # restarts the mysql service

Si ce qui précède ne fonctionne pas pour vous, suivez les étapes décrites dans le message de zetacu ci-dessus ( zetacu ) puis suivez mes étapes.

Vous devriez maintenant être en mesure d'utiliser un client terminal distant et de vous connecter en toute sécurité à mysql en utilisant la commande :

mysql -u your_user_name -p

*Tapez le mot de passe lorsque vous êtes invité à le faire.

0 votes

C'est simple. Eh bien, seule la première commande ne permet pas d'exécuter la seconde, je vais donc l'ajuster en la modifiant - voyez si j'ai raison...

8voto

Eminem347 Points 189

Je vous suggère de supprimer la connexion Mysql.

UPDATE - Ceci est pour Mysql version 5.5, si votre version est différente, veuillez changer la première ligne en conséquence.

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

Et installez à nouveau, mais cette fois-ci, définissez vous-même un mot de passe Root. Cela vous épargnera beaucoup d'efforts.

sudo apt-get update
sudo apt-get install mysql-server

0 votes

@ingernet peut-être que c'est à cause d'autres problèmes que vous avez négligés lors de la réinstallation.

0 votes

@PJBrunet peut-être parce que votre version de Mysql est différente.

0 votes

D'accord, mais une solution polyvalente est préférable.

-1voto

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 contient une excellente documentation sur la façon de procéder : http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Je vais ne pas montrer le processus ici parce que Documentation MySql sur le lien ci-dessus il est clair et concis .

1 votes

Merci pour la réponse, mais je n'ai pas réussi à la faire fonctionner, j'ai donc choisi d'installer iRedMail avec une base de données pgSQL à la place.

0 votes

Roger Folkman ! C'est bon de savoir que vous avez résolu votre problème de toute façon.

2 votes

Les liens se cassent. mysql.com a eu de nombreux liens cassés au cours des années. Vous devez copier et coller les informations pertinentes ici, ce qui est bien tant que vous attribuez la source.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X