web-dev-qa-db-fra.com

"Votre mot de passe a expiré" après le redémarrage de mysql lors de la mise à jour de mysql 5.7.8-rc (debian)

echo time login dans mysql Shell cela montre:

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

et le journal des erreurs indique: Your password has expired. To log in you must change it using a client that supports expired passwords.

6
lasteye

Le mot de passe MySQL a expiré

En règle générale, dans un shell de script, vous obtenez le message: "Votre mot de passe a expiré. Pour vous connecter, vous devez le modifier à l'aide d'un client qui prend en charge les mots de passe expirés."

De MySQL 5.7.4 à 5.7.10, la valeur par défaut pour le default_password_lifetime la variable est 360 (par an). Pour ces versions, si vous n'apportez aucune modification à cette variable ou aux comptes d'utilisateurs individuels, tous les mots de passe des utilisateurs expireront après 360 jours.

Pour empêcher l'expiration automatique du mot de passe, connectez-vous en tant que root:

mysql -u root -p

puis, pour les clients qui se connectent automatiquement au serveur (par exemple à partir des scripts), modifiez les paramètres d'expiration du mot de passe pour ces clients:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

ou désactivez simplement l'expiration automatique du mot de passe pour tous les utilisateurs :

SET GLOBAL default_password_lifetime = 0;

Liens et ressources:

MySQL: Expiration du mot de passe et mode Sandbox
MySQL: politique d'expiration des mots de passe
Politique d'expiration du mot de passe dans MySQL Server 5.7

5
Dave Everitt

Vous devez activer le Sandbox Mode pour votre connexion. Pour la CLI mysql, il y a un paramètre pour le spécifier:

mysql -u <user> [other params] --connect-expired-password

Vous devez ensuite utiliser l'instruction SET PASSWORD pour réinitialiser votre mot de passe (il est autorisé de le réinitialiser à sa valeur actuelle).

4
jkavalik

This fonctionne pour moi:

Dans CMD ou dans un terminal LINUX, connectez-vous en tant que root:

mysql -u root -p

puis vous désactivez l'expiration automatique des mots de passe de tous les utilisateurs:

SET GLOBAL default_password_lifetime = 0;
2
LiveDev

Dans my.cnf change ça:

[mysqld]
default_password_lifetime=180

pour ça:

[mysqld]
default_password_lifetime=0

Et puis redémarrez votre serveur mysql: service mysql restart

Changement de ligne default_password_lifetime affectera le paramètre global pour tous les utilisateurs sur le serveur, ne le faites que si vous le souhaitez. Cette solution est avancée par le fonctionnaire MySQL 5.6 Password Expiration Policy .

0
Martin