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