MySQL 8.0 引入新的参数 password_reuse_interval,用来控制历史密码的 使用策略,增强密码安全性。password_reuse_interval 参数定义了一个阈值,来控制之前使用过的密码,在经过多少天之后,才能重复使用,该参数设置为0,表示禁用该策略。
该参数与password_history功能很相似,不同的是password_history指定的是密码修改多少次之后,才能重复使用旧密码。
password_reuse_interval:
- 作用范围:Global
- 动态修改:Yes
- 默认值:0
- 取值范围:0~4294967295
举个例子,设置password_reuse_interval为3,MySQL 账号 root 其初始密码为 '111111',然后修改密码为'222222',再次将密码修改回'111111'时,就会报错,必须等到3天之后,才能将密码修改回'111111',否则将会报错,如下:
ERROR 3638 (HY000): Cannot use these credentials for 'app8@%' because they contradict the password history policy
除了使用参数password_reuse_interval来控制全局的历史密码使用策略外,还可以在create user和alter user语句中,使用password reuse interval 子句单独控制某个用户的历史密码策略,如下所示:
- create user 'app'@'localhost' password reuse interval 365 day;
- alter user 'app'@'localhost' password reuse interval 365 day;