Réinitialisez le mot de passe root MySQL à l'aide de l'instruction ALTER USER après l'installation sur Mac

184

Je suis nouveau dans toute l'expérience Mac. J'ai récemment installé MySQL et il semble que je doive réinitialiser le mot de passe après l'installation. Cela ne me laissera rien faire d'autre.

Maintenant, je réinitialise déjà le mot de passe de la manière habituelle:

update user set password = password('XXX') where user = root;

(BTW: il m'a fallu du temps pour comprendre que MySQL, pour une raison étrange, a renommé le champ 'password' en 'authentication_string'. Je suis assez contrarié par des changements comme ça.)

Malheureusement, il semble que je doive changer le mot de passe d'une manière différente qui m'est inconnue. Peut-être que quelqu'un ici a déjà rencontré ce problème?

dengar81
la source

Réponses:

509

Si ce n'est PAS la première fois que vous configurez le mot de passe, essayez cette méthode:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

Et si vous obtenez l'erreur suivante, il y a de fortes chances que vous n'ayez jamais défini votre mot de passe auparavant:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Pour configurer votre mot de passe pour la première fois :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

Référence: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html

Madmint
la source
10
Merci! Message d'erreur très déroutant de MySQL cependant!
Ed.
1
Cela a fonctionné pour moi avec mysql-5.7.13-osx10.11-x86_64
GiriB
1
Après le 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', j'obtiens l'erreur suivante: 'ERROR 29 (HY000): File' ./mysql/user.MYD 'not found (Errcode: 2 - No such fichier ou répertoire) '. Est-ce que quelqu'un peut m'aider ?
Ray Kim
4
Vous noterez que contrairement à ce que MySQL suggère, vous n'utilisez pas l'instruction "ALTER USER", mais simplement "SET PASSWORD" ...
Fabien Haddadi
1
Le premier exemple tente potentiellement de définir un mot de passe pour un autre utilisateur que celui que vous utilisez lors de la soumission de cette ligne. La seconde tente de définir le mot de passe de l'utilisateur que vous avez utilisé pour vous connecter à mysql. Ainsi le dernier fonctionne.
Hafenkranich
130

Si vous avez démarré mysql en utilisant mysql -u root -p

Essayer ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

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

shnraj
la source
1
Je vous remercie! Cela a fonctionné pour moi! J'utilise mysql-5.7.11-osx10.10-x86_64.
LeArNr
Cela a fonctionné; Merci! Cela m'attriste profondément que même si MySQL est un programme si largement utilisé, il n'y a pas de documentation unique pour l'installer et le faire fonctionner rapidement.
Shatu
Merci ! Cela m'a aidé
Sparw
3
Après beaucoup de frustration, une variante de cela a fonctionné sur mint 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve
Un million de remerciements. C'est la seule chose qui a fonctionné pour moi.
RandyMy
33

J'ai le même problème sur Mac

Tout d'abord, connectez-vous à mysql en mode sandbox

mysql -u <user> -p --connect-expired-password

Ensuite, définissez le mot de passe

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

Query OK, 0 rows affected, 1 warning (0.01 sec)

Cela fonctionne pour moi ~

via: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde

Ezio Shiki
la source
1
Cela semble assez compliqué en gardant à l'esprit que vous devez le faire avant même d'utiliser la base de données.
seba.wagner
dans l'avertissement qu'il veut que vous SET PASSWORD FOR 'root'@'localhost' = 'XXXX';
utilisiez
22

Si vous utilisez MySQL 5.7.6 et versions ultérieures:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Si vous utilisez MySQL 5.7.5 et versions antérieures:

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

Documentation MySQL

Johel Alvarez
la source
1
J'utilise MySQL 5.7.9 et la chose étrange a SET PASSWORD = PASSWORD('my_pass')fonctionné pour moi. Il y a des commentaires de personnes avec des versions plus récentes mentionnant que cette déclaration a également fonctionné pour eux. Malgré cela, j'ai voté pour votre réponse car vous avez trouvé cette référence particulière dans la documentation MySQL que personne n'a mentionnée plus tôt.
Armfoot
MySQL 8 SET PASSWORD jeté et erreur. ALTER USER a fonctionné.
Timar Ivo Batis
13

Sur MySQL 5.7.x, vous devez passer au mot de passe natif pour pouvoir le changer, comme:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Vadim Smilansky
la source
11

Exécutez ces:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

Puis cours

./mysql -u root

Il devrait se connecter. Maintenant, exécutez les privilèges FLUSH;

Ensuite, quittez la console MySQL et essayez de vous connecter. Si cela ne fonctionne pas, exécutez ceci:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Remplacez xxxxxx par votre nouveau mot de passe. Essayez ensuite de vous reconnecter.

Mettre à jour. Voir ceci http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Cela devrait résoudre votre problème.

Si vous êtes sur Oracle, essayez ceci

ALTER USER username IDENTIFIED BY password

la source
Non, désolé cela ne fonctionne pas non plus. Du moins plus. La colonne «mot de passe» a été renommée par Oracle, btw. Il s'appelle désormais authentication_string. Mais je ne peux pas exécuter cette commande, car je dois d'abord changer le mot de passe à l'aide de la commande ALTER USER. C'est incroyablement frustrant, car ce n'est pas ainsi que vous mettriez traditionnellement à jour le mot de passe. ALTER doit être réservé aux tables, fonctions et trucs, sans modifier les entrées d'une table. C'est la déclaration de mise à jour. (Désolé de
déclamer
@Shivan Paw: Deux avertissements auxquels je m'attendrais: mysqladmin: [Avertissement] L'utilisation d'un mot de passe sur l'interface de ligne de commande peut ne pas être sécurisée. Avertissement: puisque le mot de passe sera envoyé au serveur en texte brut, utilisez une connexion SSL pour garantir la sécurité du mot de passe. - Je considérerais que le mot de passe est mis à jour. Et en effet, je peux me connecter avec le nouveau mot de passe. Cependant, je ne peux toujours pas exécuter de requêtes, car je dois mettre à jour le mot de passe avec la commande ALTER USER :(.
dengar81
@Shivan Paw: Essayez quoi? J'ai déjà essayé d'utiliser les commandes que vous avez suggérées. Réinitialisation du mot de passe à l'aide de la commande ./mysqladmin (deux avertissements) puis exécution de la mise à jour sur mysql.user ... La deuxième commande échoue avec le message "Vous devez réinitialiser votre mot de passe en utilisant ALTER USER [...]"
dengar81
C'est la seule solution qui a fonctionné pour moi. si vous avez un mot de passe expiré dans la dernière version de mysql, il ne vous laissera pas ALTER_USER ou SET_PASSWORD.
Aaron Henderson
7

Essayez peut-être ça?

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

ou

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

Selon l'accès que vous utilisez.

(et pas sûr que vous deviez changer vous-même les noms de champs ...)

https://dev.mysql.com/doc/refman/5.0/en/set-password.html

Mateo Barahona
la source
Non désolé, cela ne fonctionne pas: ERREUR 1820 (HY000): Vous devez réinitialiser votre mot de passe à l'aide de l'instruction ALTER USER avant d'exécuter cette instruction.
dengar81
7

ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'new_password';

Utilisez cette ligne ...

Manoj Behera
la source
7

UPDATE user SET authentication_string = PASSWORD ("MyPassWord") WHERE User = 'root'; ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de '("MyPassWord") WHERE User =' root '' à la ligne 1

Résolu avec

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Référence du site ci-dessous

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

Siddharth Pandey
la source
5

Sur Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), je me suis connecté en tant que: mysql -uroot -ppuis j'ai saisi le mot de passe généré par MySQL lors de son installation. Ensuite..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

Exemple:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

Et vous pouvez taper 'Ab1234'

Kenny Alvizuris
la source
3

Mysql 5.7.24 obtenir la première connexion root

étape 1: obtenir le mot de passe du journal

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

étape 2: connectez-vous avec lui à mysql

mysql -uroot -p'wHkJHUxeR4)w'

étape 3: vous mettez un nouveau mot de passe root

SET PASSWORD = PASSWORD('xxxxx');

vous obtenez ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

comment le réparer?

lance ça SET GLOBAL validate_password_policy=LOW;

Réessayer SET PASSWORD = PASSWORD('xxxxx');

Robert A
la source
2

Voici la manière dont fonctionne pour moi.

mysql> show databases ;

ERREUR 1820 (HY000): vous devez réinitialiser votre mot de passe à l'aide de l'instruction ALTER USER avant d'exécuter cette instruction.

mysql> uninstall plugin validate_password;

ERREUR 1820 (HY000): vous devez réinitialiser votre mot de passe à l'aide de l'instruction ALTER USER avant d'exécuter cette instruction.

mysql> alter user 'root'@'localhost' identified by 'root';

Requête OK, 0 ligne affectée (0,01 s)

mysql> flush privileges;

Requête OK, 0 ligne affectée (0,03 s)

sunling90
la source
1

Lorsque vous l'utilisez, SET PASSWORD = PASSWORD('your_new_password');cela peut planter

(ERREUR 1819 (HY000): votre mot de passe ne répond pas aux exigences de la politique actuelle)

.vous pouvez utiliser SET GLOBAL validate_password_policy=LOW;pour le slove.

未来 陆家嘴 顶尖 的 投资 人
la source
1

en version 5.7. Le champ «mot de passe» a été supprimé. 'authentication_string' le remplace

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;
HUAN LIU
la source
0

J'ai également eu le même problème dans mac OS X 10.10.4 (Yosemite) .SET PASSWORD fonctionne pour moi.Alter password for mysql- mysql> SET PASSWORD = PASSWORD ('your_password'); Requête OK, 0 ligne affectée, 1 avertissement (0,01 s)

définissez votre variable de chemin d'environnement Mysql dans .bash_profile et ajoutez la ligne ci-dessous
export PATH = $ PATH: / usr / local / mysql / bin, après cela, exécutez la commande suivante: source .bash_profile

Moumita
la source
0

J'ai eu le problème après avoir installé mysql workbench et le serveur de communauté mysql. Mot de passe généré lors de l'installation du serveur. Un double-clic sur l'instance locale existante dans Workbench a déclenché une boîte de dialogue dans laquelle je pouvais définir le nouveau mot de passe.

Malte
la source
0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Ça marche pour moi.

zhao
la source
0

souvenez-vous des versions 5.7.23 et supérieures - la table des utilisateurs n'a pas de mot de passe de colonne à la place de la chaîne d'authentification, donc ci-dessous fonctionne lors de la réinitialisation du mot de passe pour un utilisateur.

update user set authentication_string=password('root') where user='root';
Pravin
la source