mysql设置密码

发布时间: 2023-11-21 10:52 阅读: 文章来源:1MUMB360PS
概述

今天主要分享一个关于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‘ FROMmysql.USER WHEREaccount_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‘ FROMmysql.USER WHEREaccount_locked = ‘N‘ and user not in(‘root‘,‘dbmt‘);

4、测试重启后是否生效

重启数据库后检查,符合需求。

select USER,HOST,account_locked,password_expired,password_lifetimeFROMmysql.USER WHEREaccount_locked = ‘N‘;

后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

•••展开全文
相关文章