前言:
现在姐妹们对“mysql 密码过期”大体比较看重,小伙伴们都想要学习一些“mysql 密码过期”的相关内容。那么小编同时在网摘上网罗了一些有关“mysql 密码过期””的相关资讯,希望兄弟们能喜欢,大家快快来学习一下吧!概述
今天主要分享一个关于mysql密码策略限制的方案。
一、需求
具体需求如下:
root及应用系统账号设置永不过期,运维人员账号设置过期时间为180天
二、相关原理
从MySQL 5.7.4版开始,用户的密码过期时间这个特性做了改进,可以通过一个全局变量default_password_lifetime来设置密码过期的策略,此全局变量可以设置一个全局的自动密码过期策略。 常用如下:
1、全局策略:90天过期
可以在MySQL的配置文件中设置一个默认值,这会使得所有MySQL用户的密码过期时间都为90天,MySQL会从启动时开始计算时间。my.cnf配置如下:
[mysqld]default_password_lifetime=90
2、全局策略:永不过期
如果要设置密码永不过期的全局策略,可以设置
[mysqld]default_password_lifetime=0
3、用户特定策略:30天过期(覆盖全局)
还可以使用ALTER USER命令为每个具体的用户账户单独设置特定的值,它会自动覆盖密码过期的全局策略。要注意ALTER USER语句的INTERVAL的单位是“天”。
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE INTERVAL 30 DAY;
4、用户特定策略:禁用密码过期
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;
5、用户特定策略:使用默认的密码过期全局策略
ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE DEFAULT;
三、实现方案
1、禁用全局策略
在my.cnf设置:
[mysqld]default_password_lifetime=0
2、设置root用户及应用权限账户永不过期
SELECT USER, HOST, account_locked, password_expired, password_lifetime, concat( 'alter user ', USER, '@''',host, ''' PASSWORD EXPIRE NEVER;' ) 'root_policy' FROM mysql.USER WHERE account_locked = 'N';
3、设置运维账号180天后过期
SELECT USER, HOST, account_locked, password_expired, password_lifetime, concat( 'alter user ', USER, '@''', HOST, ''' PASSWORD EXPIRE INTERVAL 180 DAY;' ) 'ops_policy' FROM mysql.USER WHERE account_locked = 'N' and user not in('root','dbmt');
4、测试重启后是否生效
重启数据库后检查,符合需求。
SELECT USER, HOST, account_locked, password_expired, password_lifetimeFROM mysql.USER WHERE account_locked = 'N';
后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!
标签: #mysql 密码过期 #mysql的默认密码 #mysql的默认密码是多少啊 #mysql80密码策略 #mysql第一次密码设置