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 '%'.

240voto

KeitelDOG Points 420

Si vous rencontrez ce même problème dans MySql 5.7.+ :

Access denied for user 'root'@'localhost'

c'est parce que MySql 5.7 permet par défaut de se connecter avec un socket, ce qui veut dire que vous vous connectez simplement avec sudo mysql . Si vous exécutez sql :

SELECT user,authentication_string,plugin,host FROM mysql.user;

alors vous le verrez :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Pour autoriser la connexion avec Root et mot de passe, mettez à jour les valeurs dans la table avec la commande :

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

Ensuite, exécutez à nouveau la commande select et vous verrez qu'elle a été modifiée :

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

Et c'est tout. Vous pouvez exécuter ce processus après avoir exécuté et terminé le programme sudo mysql_secure_installation commandement.

Pour mariadb, utilisez

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');

pour définir le mot de passe. Plus à https://mariadb.com/kb/en/set-password/

62voto

Andy Jones Points 3275

Utilisez les instructions pour réinitialiser le mot de passe Root - mais au lieu de réinitialiser le mot de passe Root, nous allons INSÉRER de force un enregistrement dans la table mysql.user

Dans le fichier init, utilisez plutôt ceci

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

57voto

Dan Kaiser Points 476

Il n'aimait pas mes privilèges d'utilisateur, alors je l'ai supprimé. (dans bash << sudo set user and password) (cela donne le nom d'utilisateur de Root et met le mot de passe à rien). (Sur Mac)

sudo mysql -uroot -p

33voto

aashish Points 75

Essayez les commandes suivantes

~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

22voto

ArifMustafa Points 1235

Pour les personnes qui rencontrent l'erreur ci-dessous dans la version mysql 5.7+ -

Access denied for user 'root'@'localhost' (using password: YES)
  1. Ouvrir un nouveau terminal

  2. sudo /etc/init.d/mysql stop ... Le serveur communautaire MySQL 5.7.8-rc est arrêté

  3. sudo mysqld_safe --skip-grant-tables & ceci permettra d'ignorer tous les privilèges de niveau subvention et de démarrer le mysql en mode sans échec. Parfois le processus est bloqué à cause de

grep : erreur d'écriture : pipe cassé 180102 11:32:28 mysqld_safe Enregistrement dans '/var/log/mysql/error.log'.

Il suffit d'appuyer sur Ctrl+Z ou Ctrl+C pour interrompre et quitter le processus.

  1. mysql -u root

Bienvenue dans le moniteur MySQL. Les commandes se terminent par ; ou \g. Votre identifiant de connexion MySQL est 2 Version du serveur : 5.7.8-rc Serveur communautaire MySQL (GPL)

Copyright (c) 2000, 2015, Oracle et/ou ses affiliés. Tous droits réservés.

Oracle est une marque déposée d'Oracle Corporation et/ou de ses sociétés affiliées. Les autres noms peuvent être des marques commerciales de leurs respectifs.

Tapez "help ;" ou \h pour obtenir de l'aide. Tapez ' \c ' pour effacer la déclaration d'entrée actuelle.

  1. mysql> use mysql;

Lecture des informations sur les tables pour compléter les noms des tables et des colonnes Vous pouvez désactiver cette fonctionnalité pour obtenir un démarrage plus rapide avec -A

Base de données modifiée

  1. mysql> update user set authentication_string=password('password') where user='root'; Requête OK, 4 lignes affectées, 1 avertissement (0.03 sec) Lignes correspondantes : 4 Modifiés : 4 Avertissements : 1

  2. mysql> flush privileges; Requête OK, 0 ligne affectée (0.00 sec)

  3. mysql> quit Au revoir

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

.180102 11:37:12 mysqld_safe mysqld à partir du fichier pid /var/run/mysqld/mysqld.pid terminé . * Le serveur communautaire MySQL 5.7.8-rc est arrêté arif@ubuntu:~$ sudo /etc/init.d/mysql start .. * Le serveur communautaire MySQL 5.7.8-rc est démarré.

  1. mysql -u root -p

    Entrez le mot de passe :

    Bienvenue dans le moniteur MySQL. Les commandes se terminent par ; ou \g. Votre identifiant de connexion MySQL est 2 Version du serveur : 5.7.8-rc Serveur communautaire MySQL (GPL)

après la version mysql 5.7+ la colonne password est remplacée par le nom authentication_string de la table mysql.user.

J'espère que ces étapes seront utiles à tous, merci.

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