MySql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

J'ai essayé de multiples solutions de StackOverflow, mais qui n'ont pas eu de succès. Je suis sur Mac OSX (Sierra 10.12.3) en essayant de créer une nouvelle base de données et l'utilisateur. De terminal d'entrée:

mysql -u root

qui sort cette erreur:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Pour tenter de le résoudre, j'ai arrêté de mysql à partir de "Préférences Système", puis à partir du terminal de saisie: les

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 puis redémarrez l'ordinateur (tuer le processus avec CMD + C ne fonctionne pas). Après le redémarrage, en essayant mysql -u root produit toujours le même message d'erreur.

Je suis en mesure d'accéder à mysql via un client MySQL et un utilisateur non root.

Toute aide est appréciée.

Vous avez ajouté un mot de passe afin d'utiliser -p et ajouter le mot de passe.
J'ai essayé et ça ne fonctionne pas. Après avoir entré mon mot de passe, je reçois la même erreur.
Exactement de la même erreur?
donc, pas exactement la même chose, alors. PAS signifie que vous ne sont pas de l'envoi d'un mot de passe pour MySQL. OUI signifie que vous êtes l'envoi d'un mot de passe pour MySQL mais celui incorrect. Avez-vous définissez un mot de passe pour l'utilisateur root mysql lors de l'installation de MySQL? Par défaut il n'y a pas de mot de passe de sorte que vous pouvez utiliser mysql -u root -p et appuyez sur entrée.
Juste pour confirmer: Vous assurer que vous utilisez MySQL 5.7, et pas MySQL 5.6 ou version antérieure. Et le plugin colonne contient "mysql_native_password". (Avant de MySQL 5.7, le hachage de mot de passe est stocké dans une colonne nommée mot de passe. Départ dans MySQL 5.7, la colonne mot de passe est supprimé et le mot de passe est stocké dans le authentication_string colonne.) Et vous avez également vérifié le contenu de la chaîne d'authentification correspond au retour de MOT de passe (monsecret'). Aussi, est-il une raison pour laquelle nous sommes à l'aide de DML contre le mysql.table utilisateur au lieu d'utiliser le SET PASSWORD FOR syntaxe?

OriginalL'auteur Alan P. | 2017-03-11