web-dev-qa-db-fra.com

Mise à jour du mot de passe utilisateur dans Mysql 5.7

J'ai écrit un script d'installation pour changer le mot de passe root avec cette commande SQL:

UPDATE user SET password='*C563415623144561...' WHERE user='root';

Cela ne fonctionne pas sur Mysql 5.7: http://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-6.html#mysqld-5- 7-6-account-management

Ma question est: comment changer cette commande avec une autre compatible avec les versions 5.6 et 5.7 de Mysql? Je voudrais mettre à jour le mot de passe avec une chaîne hachée et non avec un mot de passe clair.

5
Tobia

Ce n'est plus un champ mot de passe dans la table utilisateur à partir de mysql 5.7. C'est ce qu'on appelle maintenant authentication_string. Vous pouvez changer ou définir le mot de passe comme ceci: 

set password for 'jeff'@'localhost' = PASSWORD('mypass'); // this automatically hashes the password

Si vous souhaitez utiliser votre requête, il suffit de changer password en authentication_string, et cela fonctionnera.

UPDATE user SET authentication_string='*C563415623144561...' WHERE user='root@localhost';

J'espère que cette aide.

16
mdamia

J'ai utilisé cette commande pour réinitialiser le mot de passe vide dans Mysql 5.7.22 

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';

Etant donné que 'SET PASSWORD FOR = PASSWORD (' ')' est obsolète comme sur mysql 5.7. Si ce n'est pas fait correctement, vous pourriez même vous retrouver avec l'erreur ci-dessous dans syslog. 

The plugin 'auth_socket' used to authenticate user 'root'@'localhost' is not loaded. Nobody can currently login using this account.

Je suggère d'utiliser la commande ci-dessous.

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypass';

https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

1
Venkat Kotra

Tout d’abord, examinez les règles de sécurité spécifiées de votre version de mysql.

show variables like '%validate_password%';

vous pouvez changer cette politique si vous aimez avec 

set variable_name=new_value;

Changer le mot de passe utilisateur approprié.

MySQL 5.7.5 et les versions antérieures:

SET PASSWORD FOR 'user_name' = PASSWORD('new_password');

MySQL 5.7.6 et versions ultérieures:

alter user 'user_name' identified by 'new_password';
0
Musa