2017-05-17 1 views
0

MySQL a une nouvelle variable dans MySQL-5.7 qui conserve les détails d'expiration du mot de passe de l'utilisateur mysql - après combien de jours le mot de passe expire pour un utilisateur particulier.Avons-nous besoin d'exécuter les privilèges flush après avoir changé la variable default_password_lifetime dans MySQL?

Détail de cette variable: Doc

Lorsque nous avons changé cette variable, est-il nécessaire d'exécuter des privilèges de chasse ou les changements prendront effet immédiatement pour tous les utilisateurs ayant la politique expirent par défaut?

Répondre

0

Je pense que la réponse est non.

car default_password_lifetime est une variable globale, dont les informations sont stockées dans information_schema.GLOBAL_VARAIBLES, C'est une table de moteur de mémoire! Dans mysql, l'action flush provoque la réécriture des données dans le buffer, ce n'est nécessaire que dans le moteur MyISAM, cependant, la clause flush privileges recharge les données du disque MyISAM en mémoire sur le compte & .

0

Selon la documentation, il ne devrait pas être nécessaire:

6.3.6 Password Expiration Policy

...

Lorsqu'un client se connecte avec succès, le serveur détermine si le mot de passe de compte est expiré:

  • Le serveur vérifie si le mot de passe a été expiré manuellement et, le cas échéant, restreint la session. Dans le cas contraire, le serveur vérifie si le mot de passe a dépassé sa durée de vie conformément à la politique d'expiration automatique du mot de passe. Si tel est le cas, le serveur considère que le mot de passe a expiré et restreint la session.

...

IMPORTANT: Le changement prend effet que pour les connexions ultérieures.

Voici un exemple:

$ mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 13 
Server version: 5.7.18 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> SELECT @@GLOBAL.default_password_lifetime; 
+------------------------------------+ 
| @@GLOBAL.default_password_lifetime | 
+------------------------------------+ 
|         0 | 
+------------------------------------+ 
1 row in set (0.00 sec) 

mysql> CREATE USER 'johndoe'@'localhost' 
    -> IDENTIFIED WITH mysql_native_password AS '*6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' 
    -> PASSWORD EXPIRE DEFAULT; 
Query OK, 0 rows affected (0.00 sec) 

mysql> exit 
Bye 

$ mysql -u johndoe -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 14 
Server version: 5.7.18 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> SELECT CURRENT_USER(); 
+-------------------+ 
| CURRENT_USER() | 
+-------------------+ 
| [email protected] | 
+-------------------+ 
1 row in set (0.00 sec) 

mysql> exit 
Bye 

$ mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 15 
Server version: 5.7.18 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> SET @@GLOBAL.default_password_lifetime := 1; 
Query OK, 0 rows affected (0.00 sec) 

mysql> SELECT @@GLOBAL.default_password_lifetime; 
+------------------------------------+ 
| @@GLOBAL.default_password_lifetime | 
+------------------------------------+ 
|         1 | 
+------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT NOW(); 
+---------------------+ 
| NOW()    | 
+---------------------+ 
| 2010-01-01 00:00:01 | 
+---------------------+ 
1 row in set (0.00 sec) 

mysql> \! date -s "2010-01-02 $(date +%H:%M:%S)" 
Sat Jan 02 00:00:05 UTC 2010 
mysql> SELECT NOW(); 
+---------------------+ 
| NOW()    | 
+---------------------+ 
| 2010-01-02 00:00:06 | 
+---------------------+ 
1 row in set (0.01 sec) 

mysql> exit 
Bye 

$ mysql -u johndoe -p 
Enter password: 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 16 
Server version: 5.7.18 

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its 
affiliates. Other names may be trademarks of their respective 
owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> SELECT CURRENT_USER(); 
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

Autres informations d'intérêt: