ERROR 1698 (28000): Accès refusé pour l’utilisateur ‘root’ @ ‘localhost’

Donc … je suis en train de mettre en place un nouveau serveur et de continuer à résoudre ce problème.

Lorsque j’essaye de me connecter à la firebase database MySQL avec l’utilisateur root, j’obtiens l’erreur “ERROR 1698 (28000): Access denied for user ‘root’ @ ‘localhost'”.

Peu importe si 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 obtenu 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 access.

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

Il exécute Ubuntu 16.04.1 LTS avec Apache, MySQL et PHP, de sorte qu’il peut héberger des sites Web, et iRedMail 0.9.5-1, afin qu’il puisse héberger le courrier.

La connexion à la firebase database MySQL fonctionne correctement avant d’installer iRedMail. J’ai aussi essayé, juste installer iRedMail, mais ensuite root, ça ne marche 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é les conseils d’installation et je ne trouve pas ces variables dans les fichiers de configuration.

Toute aide est très appréciée 🙂

La raison en est que l’installation récente d’Ubuntu (peut-être d’autres aussi), mysql utilise par défaut le plugin UNIX auth_socket .

Fondamentalement, cela signifie que: db_users l’utilisant sera “auth” par l’utilisateur du système. Vous pouvez voir si votre utilisateur root est configuré comme suit en procédant comme suit:

 $ 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’utilisateur root utilise le plugin auth_socket

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

  1. Vous pouvez définir l’utilisateur root pour utiliser le plugin mysql_native_password
  2. Vous pouvez créer un nouvel db_user avec votre 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; $ 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 ''; 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; $ service mysql restart 

Rappelez-vous que si vous utilisez l’option n ° 2, vous devrez vous connecter à mysql en tant que nom d’utilisateur de votre système ( mysql -u YOUR_SYSTEM_USER )

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

Je 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

 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 installer à nouveau Mais cette fois, définissez vous-même un mot de passe root. Cela permettra d’économiser beaucoup d’efforts.

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

Vous voulez accéder à MySQL avec l’utilisateur root mais vous ne fournissez pas le mot de passe correct de root.

Si vous avez besoin de définir un nouveau mot de passe pour root , le site de MySQL a une excellente documentation sur la façon de le faire: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Je ne montrerai pas le processus ici parce que la documentation MySql sur le lien ci- dessus est claire et concise .

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

J’ai essayé les différentes suggestions ici, mais rien n’a fonctionné et je lance MariaDB sur l’hôte Debian. En fin de compte, j’ai constaté que je ne pouvais pas démarrer le serveur de firebase database en mode sans échec mais que je n’avais pas besoin et que les commandes suivantes fonctionnaient pour moi, permettant à un utilisateur MySql nouvellement créé de se connecter au serveur MySql / MariaDB:

 sudo service mysql stop 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 vous convient pas, suivez les étapes décrites dans le message de zetacu ci-dessus ( zetacu ), puis suivez mes étapes.

Maintenant, vous devriez pouvoir utiliser un client de terminal distant et vous connecter en toute sécurité à mysql en utilisant la commande suivante:

 mysql -u your_user_name -p 

* tapez le mot de passe lorsque vous y êtes invité

Première étape: accédez à /etc/phpmyadmin/config.inc.php puis supprimez les commentaires de la ligne où vous trouvez AllowNoPassword. Deuxième étape: connectez-vous à votre compte mysql par défaut

 mysql -u root -p use mysql; update user set plugin="" where user='root'; flush privilege; 

et c’est tout!