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.
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.
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
mysql -u root -p;
Et mysql vous demandera le mot de passe
Vous devez exécuter votre mysql par xampp-control.exe dans le dossier XAMPP. Après cette connexion:
mysql -u root
juste utiliser:
$ Sudo mysql
sans le paramètre "-u root".
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
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
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.