MySQL5.7 设置密码策略(等保三级密码改造)

目录

目标密码策略

一、至少一个大写、至少一个小写、至少一个数字、至少一个字符、长度至少9位

1.查看当前配置

2.查看现有插件

3.添加插件

4.密码策略详细配置

5.策略成果测试

二、设置60天密码过期

三、整体变更方案


目标密码策略

目标密码策略:至少一个大写、至少一个小写、至少一个数字、至少一个字符、长度至少9位、60天密码过期。

我的版本号: 5.7.21

一、至少一个大写、至少一个小写、至少一个数字、至少一个字符、长度至少9位

1.查看当前配置

show variables like 'validate_password%';

查了下,我的mysql没密码验证插件

有这个插件的应该是下面这样

 直接在my.cnf配置文件中修改了密码策略,系统就默认为我们安装密码插件,不然在刚开始的时候我们的数据库是默认没有安装密码插件的。

安装插件参考这个:mysql 安装插件 validate_password_舰长115的博客-CSDN博客_mysql 安装插件

2.查看现有插件

查看插件的路径  show variables like 'plugin_dir'; 

有我需要的“validate_password.so”这个插件

3.添加插件

修改my.cnf

#插件库的文件名是validate_password.文件名后缀根据平台的不同而不同(例如,linux是.so 对于Windows是.dll)。

 linux添加:

[mysqld]
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT

重启后查询show variables like 'validate_password%' 结果如下图。

安装了密码插件后也可以直接修改了

--可以使用以下命令进行修改
--密码验证策略低要求(0或LOW代表低级)
set global validate_password.policy=MEDIUM;

--密码至少要包含的小写字母个数和大写字母个数
set global validate_password.mixed_case_count=1;

--密码至少要包含的数字个数。
set global validate_password.number_count=1; 

--密码至少要包含的特殊字符数
set global validate_password.special_char_count=1; 

-- 密码长度
set global validate_password.length=8; 

 

4.密码策略详细配置

密码策略变量含义:

validate_password.policy:密码策略,检查用户的密码。

        0:(Low)密码长度最少8个字符

        1:(Mediumpolicy)至少包含1个数字,1个小写字母,1个大写字母和1个特殊字符组成(默认值)

        2:(Strongpolicy)长度为4或更长的密码子字符串不得与字典文件中的单词匹配

validate_password.length:需要密码最小字符数,默认为8

validate_password.number_count:需要密码的最小数字字符数,默认为1

validate_password.mixed_case_count:需要密码的小写和大写的最小字符数,默认为1

validate_password.special_char_count:需要密码的特殊字符的最小字符数,默认为1

validate_password.dictionary_file:用于检查密码的字典文件的路径名,默认没有

下面是我的配置:

 1个数字,1个小写字母,1个大写字母和1个特殊字符组成,最少9位。

5.策略成果测试

#alter user 'root'@'%' identified by '123456';

二、设置60天密码过期

select * from mysql.user;

N为不过期,Y为过期。默认为N不过期。

将密码设置为过期的语句为:alter user ‘用户名’@‘host’ password expire; 如:

alter user 'root'@'localhost' password expire;

这时候输入

select * from mysql.user;

查看root的password_expired字段已经变为Y,再重新登录时会发现已经连接不上,提示密码过期。解决办法是修改登录密码就可以。

查看网上的说法,可以修改过期的天数(多少天过期),以天为单位,如:

ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 30 DAY;

或者修改密码永不过期,如:

ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

或这种方式修改密码不过期:

SET GLOBAL default_password_lifetime = 0;

我这里执行:

ALTER USER 'root'@'%' PASSWORD EXPIRE INTERVAL 60 DAY;

执行结果:

三、整体变更方案

 分享下最后的变更方案

#----------------
目标密码策略
#----------------
至少一个大写、至少一个小写、至少一个数字、至少一个字符、长度至少9位、60天密码过期。

#----------------
修改root密码过期时间,不需重启
#----------------


主从分别如下步骤执行:
1.更改过期时间
ALTER USER 'root'@'%' PASSWORD EXPIRE INTERVAL 60 DAY;

2.查看执行结果,password_lifetime为60
select * from mysql.user;

#----------------
至少一个大写、至少一个小写、至少一个数字、至少一个字符、长度至少9位,需重启数据库
#----------------

0.

数据库启动顺序
停应用 ->停数据库(先备后主) ->改配置 -> 启数据库(先主后备)-> 启应用
https://blog.csdn.net/qq_41466440/article/details/125104962

1.
停应用 

2.
关闭MySQL从库
a.先查看当前的主从同步状态show slave statusG;看是否双yes
b.执行stop slave
c.停止从库服务mysqladmin shutdown -u用户名 -p密码 (service mysqld stop)
d.查看是否还有mysql的进程ps -ef | grep mysql
d.如果部署了多个实例,那每个实例都要按照以上步骤来操作

3.
关闭MySQL主库
a.停止主库服务mysqladmin shutdown -u用户名 -p密码 (service mysqld stop)
b.查看是否还有mysql的进程ps -ef | grep mysql

4.
编辑配置文件
vim /etc/my.cnf
添加:
[mysqld]
plugin-load-add=validate_password.so
#服务器在启动时加载插件,并防止在服务器运行时删除插件。
validate-password=FORCE_PLUS_PERMANENT
#密码策略
validate_password_policy=1
validate_password_length=9

5.
启动MySQL主库
a.启动主库服务mysqladmin start -u用户名 -p密码 (service mysqld start)
b.查看mysql的进程ps -ef | grep mysql

6.
启动MySQL从库
a.启动从库服务mysqladmin start -u用户名 -p密码 (service mysqld start)
b.启动复制start slave;
c.检查同步状态show slave statusG;是否双yes
d.查看mysql的进程ps -ef | grep mysql

7.
查看插件及策略是否添加成功
service mysqld restart
show variables like 'validate_password%';

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ahuuua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值