188 votes

Accès refusé à l'utilisateur 'Root'@'localhost' (avec mot de passe : YES) - Pas de privilèges ?

Je reçois continuellement cette erreur.

J'utilise mySQL Workbench et ce que je constate, c'est que les privilèges de schéma de Root sont nuls. Il n'y a pas de privilèges du tout.

J'ai des problèmes avec les différentes plateformes pour lesquelles mon serveur est utilisé et ce problème est apparu soudainement.

Root@127.0.0.1 a apparemment beaucoup d'accès mais je suis connecté en tant que tel, mais il attribue simplement à localhost de toute façon - localhost n'a aucun privilège.

J'ai fait des choses comme FLUSH HOSTS , FLUSH PRIVILEGES etc. mais je n'ai rien trouvé de concluant dans ce domaine ou sur Internet.

Comment puis-je récupérer l'accès à Root ? Je trouve cela frustrant parce que lorsque je regarde autour de moi, les gens s'attendent à ce que vous ayez "un accès" mais je n'ai pas d'accès et je ne peux pas aller dans la ligne de commande ou quoi que ce soit et GRANT moi-même n'importe quoi.

En cours d'exécution SHOW GRANTS FOR root c'est ce que je reçois en retour :

Code d'erreur : 1141. Il n'y a pas de subvention définie pour l'utilisateur 'Root' sur l'hôte '%'.

19voto

J'utilisais ubuntu 18 et j'ai simplement installé MySQL (password:Root) avec les commandes suivantes.

sudo apt install mysql-server
sudo mysql_secure_installation

Lorsque j'ai essayé de me connecter avec l'utilisateur normal d'ubuntu, j'ai rencontré ce problème.

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Mais j'ai pu me connecter à MySQL via le super utilisateur. En utilisant les commandes suivantes, j'ai pu me connecter via un utilisateur normal.

sudo mysql    
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
exit;

Ensuite, vous devriez pouvoir vous connecter à Mysql avec le compte normal.

enter image description here

15voto

Tanmoy Bhowmick Points 781

Si vous obtenez cette erreur dans Workbench mais que vous pouvez vous connecter à partir du terminal, suivez les étapes suivantes.

Tout d'abord, il suffit de vous connecter avec votre mot de passe actuel :

sudo mysql -u root -p

Ensuite, changez votre mot de passe car un mot de passe de faible force donne parfois des erreurs.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

Ensuite, il suffit de quitter et de se connecter à nouveau avec votre nouveau mot de passe :

quit

sudo mysql -u root -p

Une fois que vous vous êtes connecté avec succès, tapez la commande :

use mysql;

Il devrait afficher un message du type "Base de données modifiée", puis tapez :

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

Après cela, tapez :

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

Puis tapez :

FLUSH PRIVILEGES;

Ensuite, il suffit de sortir :

quit

Essayez maintenant de vous connecter avec votre nouveau mot de passe dans votre WORKBENCH. J'espère que cela fonctionnera. Merci.

8voto

Parth mehta Points 420

Un moyen simple de réinitialiser le mot de passe racine sur les systèmes Linux :

sudo dpkg-reconfigure mysql-server-5.5

Vérifiez d'autres raisons pour l'accès refusé :

https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html

5voto

Shridhar S Chini Points 121

J'ai rencontré ce problème lors de l'installation de Testlink sur le serveur Ubuntu, j'ai suivi les étapes suivantes

mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit

Maintenant, arrêtez l'instance et recommencez, c'est-à-dire

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

2voto

avijendr Points 777

La façon la plus simple de réinitialiser le mot de passe Root est :

  • redémarrer l'option mysqld --skip-grant-tables . Cela permet à n'importe qui de se connecter sans mot de passe et avec tous les privilèges. Parce que c'est peu sûr, il est préférable d'utiliser --skip-grant-tables conjointement avec avec --skip-networking pour empêcher les clients distants de se connecter.

  • Connectez-vous au serveur mysqld avec cette commande :

  • shell> mysql Exécutez les instructions suivantes dans le client mysql. Remplacez le mot de passe par le mot de passe que vous souhaitez utiliser.

  • mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') -> WHERE User='Root' ; mysql> FLUSH PRIVILEGES ;

  • Arrêtez le serveur, puis redémarrez-le normalement (sans les options --skip-grant-tables et --skip-networking).

Source : documentation Mysql et expérience personnelle :

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html

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