web-dev-qa-db-fra.com

MySql ERROR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)

J'ai essayé plusieurs solutions de StackOverflow mais je n'ai pas eu de succès. Je suis sous Mac OSX (Sierra 10.12.3) en train de créer une nouvelle base de données et un nouvel utilisateur. Depuis le terminal j'entre:

mysql -u root

qui affiche cette erreur:

ERROR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)

Pour essayer de le résoudre, j'ai arrêté mysql dans 'Préférences Système', puis à partir du terminal saisi:

Sudo mysqld_safe —skip-grant-tables

J'ai ouvert un deuxième onglet et entré:

mysql -u root

Puis à partir de mysql:

update mysql.user set password_expired = 'N', authentication_string=PASSWORD('newpassword') where user = 'root';

flush privileges;

Je redémarre ensuite l'ordinateur (tuer le processus avec CMD + C ne fonctionne pas). Après le redémarrage, essayer mysql -u root produit toujours la même erreur.

Je peux accéder à mysql via un client MySQL et un utilisateur non root.

Toute aide est appréciée.

25
Alan P.

Juste pour confirmer: vous êtes sûr que vous utilisez MySQL 5.7, et non pas MySQL 5.6 ou une version antérieure. Et la colonne du plugin contient "mysql_native_password". (Avant MySQL 5.7, le hachage du mot de passe était stocké dans une colonne nommée password. Depuis MySQL 5.7, la colonne de mot de passe est supprimée et le mot de passe est stocké dans la colonne authentication_string.) Et vous avez également vérifié le contenu de la chaîne d'authentification. correspond au retour de PASSWORD ('mysecret'). Aussi, y a-t-il une raison pour laquelle nous utilisons DML sur la table mysql.user au lieu de la syntaxe SET PASSWORD FOR? - spencer7593 

Donc, fondamentalement, assurez-vous que la colonne du plug-in contient "mysql_native_password". 

Ce n’était pas mon travail, mais j’ai lu des commentaires et constaté que c’était la réponse mais n’était pas encore affichée.

7
Ansel Faillace

Pour des raisons de sécurité, la racine mysql -u ne fonctionnera pas tant que vous n’auriez pas passé la commande -p,

 mysql -u root -p[Enter]
 //enter your localhost password
30
Pramod Patil
mysql -u root -p;

Et mysql vous demandera le mot de passe

7
gud3

Vous devez exécuter votre mysql par xampp-control.exe dans le dossier XAMPP. Après cette connexion:

mysql -u root
2
b2ok

juste utiliser:

$ Sudo mysql

sans le paramètre "-u root". 

2
Alex Angelico

Est-il possible que le mot de passe root ne soit pas ce que vous pensez? Avez-vous vérifié le mot de passe dans le fichier /root/.mysql_secret? Il s’agit de l’emplacement par défaut du mot de passe root automatisé généré à partir de la version 5.7. 

cat /root/.mysql_secret
1
invalid entry

Si vous devez ignorer l'invite de mot de passe pour une raison quelconque, vous pouvez saisir le mot de passe dans la commande (Dangereux)

mysql -u root --password=secret
1
lofihelsinki

Essayez ceci (sous Windows, je ne sais pas comment faire sous d’autres), si vous avez changé de mot de passe et que cela ne fonctionne pas.

1) tuer mysql 2) sauvegarder le dossier/mysql/data 3) aller au dossier /mysql/backup4) copier les fichiers du dossier/mysql/backup/mysql vers/mysql/data/mysql (réécrire) 5) lancer mysql

Dans mon XAMPP sur Win7 cela fonctionne.

0
daewoo