如何通过配置MySQL的password_reuse_interval参数来限制密码重用并防范弱密码?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1054个文字,预计阅读时间需要5分钟。
MySQL 8.0.19 开始原生支持密码重用策略,通过设置 password_reuse_interval 控制用户多长时间内不能重复使用旧密码。此功能单独生效,但必须配合 password_history(保留一定次数的旧密码)一起使用,以增强安全性。仅对启用了验证插件的用户账户有效。
常见错误现象:ERROR 3753 (HY000): The 'password_reuse_interval' option is not supported for accounts without a password history policy —— 这说明只设了 password_reuse_interval 却没配 password_history。
- 必须先全局启用密码历史策略:
SET PERSIST password_history = 5;(保留最近 5 次密码)
- 再设置重用间隔:
SET PERSIST password_reuse_interval = 180;(180 天内不可复用)
- 这两个参数都需用
SET PERSIST(写入mysqld-auto.cnf),重启后仍生效;仅用SET GLOBAL会丢失 - 参数单位是「天」,不是秒或小时,填小数(如
0.5)会被截断为0,等效于禁用限制
给已有用户强制启用密码重用检查
全局参数只定义策略框架,具体用户是否受约束,取决于其认证插件是否支持密码验证,以及创建/修改时是否显式启用了策略。
本文共计1054个文字,预计阅读时间需要5分钟。
MySQL 8.0.19 开始原生支持密码重用策略,通过设置 password_reuse_interval 控制用户多长时间内不能重复使用旧密码。此功能单独生效,但必须配合 password_history(保留一定次数的旧密码)一起使用,以增强安全性。仅对启用了验证插件的用户账户有效。
常见错误现象:ERROR 3753 (HY000): The 'password_reuse_interval' option is not supported for accounts without a password history policy —— 这说明只设了 password_reuse_interval 却没配 password_history。
- 必须先全局启用密码历史策略:
SET PERSIST password_history = 5;(保留最近 5 次密码)
- 再设置重用间隔:
SET PERSIST password_reuse_interval = 180;(180 天内不可复用)
- 这两个参数都需用
SET PERSIST(写入mysqld-auto.cnf),重启后仍生效;仅用SET GLOBAL会丢失 - 参数单位是「天」,不是秒或小时,填小数(如
0.5)会被截断为0,等效于禁用限制
给已有用户强制启用密码重用检查
全局参数只定义策略框架,具体用户是否受约束,取决于其认证插件是否支持密码验证,以及创建/修改时是否显式启用了策略。

