前言

因等保安全的要求,需要对MySQL用户密码和登录策略进行安全加固,以满足以下需求:

  • 密码至少8位,包含大小写字母、数字和特殊字符。
  • 当密码登录失败一定次数后锁定账户。
  • 密码90天过期

本文使用的MySQL版本为8.0.33,不同版本可能会有区别。

安装插件

-- 密码复杂度插件
install plugin validate_password soname 'validate_password.so';
-- 登录失败锁定插件
install plugin connection_control soname 'connection_control.so'; -- 查看插件
show plugins;

配置密码复杂度

  1. 查看相关参数
SHOW GLOBAL VARIABLES LIKE '%validate_password%';
参数 说明
validate_password_check_user_name 设置为ON时表示能将密码设置为用户名
validate_password_dictionary_file 检查密码时的字典文件路径
validate_password_length 密码最小长度,默认为8
validate_password_mixed_case_count 大写和小写字母最少数量,默认为1
validate_password_number_count 密码中数字最少数量,默认为1
validate_password_policy 密码强度,默认为MEDIUM,可选LOW、STRONG。STRONG比MEDIUM多配置一个密码字典;LOW只有长度限制
validate_password_special_char_count 特殊字符数量,默认为1
  1. 修改密码长度参数,至少12位
SET GLOBAL validate_password_length=12;
  1. 测试,创建用户
-- 用弱密码测试,应该会提示 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
create user 'user10'@'%' identified by '123456';
-- 用11位密码测试,也应该会失败
create user 'user10'@'%' identified by 'kQ8!rG2*qA0';
-- 用12位密码测试,成功
create user 'user10'@'%' identified by 'kQ8!rG2*qA01'; -- 如果用户测试完不使用,最好删除
drop user 'user10'@'%';
  • 卸载插件。如果插件不想用,则可以选择卸载
uninstall  plugin validate_password;

配置登录失败锁定

  1. 查看相关参数
SHOW GLOBAL VARIABLES LIKE '%connection_control%';
参数 说明
connection_control_failed_connections_threshold 登录失败次数,默认为3
connection_control_max_connection_delay 最大延迟登录时间,单位毫秒。当一个新的连接到达MySQL时,如果当前连接数已经超过了最大连接数,且新连接请求延迟时间超过该参数的值,MySQL将拒绝该连接请求。
connection_control_min_connection_delay 最小延迟登录时间,单位毫秒。当一个新的连接到达MySQL时,如果当前连接数已经超过了最大连接数,且新连接请求延迟时间小于该参数的值,MySQL将延迟该连接请求。
  1. 修改connection_control_min_connection_delay参数的值为300000毫秒,即300秒、5分钟
set global connection_control_min_connection_delay=300000;
  1. 测试。使用错误的密码登录测试,错误登录三次后再登录会等待5分钟才能连接。

配置密码过期策略

相关参数为default_password_lifetime,默认值为0。

set global default_password_lifetime=90;

修改该参数只会对新用户有效,对于已经创建的用户需要手动设置密码过期

-- 立即过期
alter user 'user10'@'%' PASSWORD EXPIRE;
-- 90天后过期
alter user 'user10'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
-- 永不过期
alter user 'user10'@'%' PASSWORD EXPIRE NEVER;

固化配置

以上配置命令在MySQL重启后就会失效,因此需要将配置写到配置文件中。

[mysqld]
default_password_lifetime = 90 plugin-load-add=validate_password.so
validate_password=FORCE
validate_password_length=12
validate_password_check_user_name=OFF
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_policy=MEDIUM
validate_password_special_char_count = 1 plugin-load-add=connection_control.so
connection_control=FORCE
connection_control_min_connection_delay=300000
connection_control_failed_connections_threshold=3

参考

[mysql]安全加固的更多相关文章

  1. lamp下mysql安全加固

    lamp下mysql安全加固 1.修改root用户口令,删除空口令 缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母.数字和符号组成的不规律 ...

  2. Mysql安全加固

    1.确保MYSQL_PWD环境变量未设置 描述 MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险. 加固建议 删除系统环境变量中MySQL密码(MYSQL ...

  3. 利用login-path对MySQL安全加固

      Preface       Connection security is  one of the most important safety strategies which we should ...

  4. [Windows Server 2012] MySQL安全加固

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:MySQL ...

  5. Mysql 安全加固经验总结

    本文为博主原创,转载请注明出处: 目录 1.内网部署Mysql 2. 使用独立用户运行msyql 3.为不同业务创建不同的用户,并设置不同的密钥 4.指定mysql可访问用户ip和权限 5. 防sql ...

  6. mysql常见安全加固策略

    原创 2017年01月17日 21:36:50 标签: 数据库 / mysql / 安全加固 5760 常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini: ...

  7. MYSQL数据库攻防与加固

    这是“官方”原本的模样搬过来的..写的很粗略啊.还有篇详细的请查看:MySQL安全加固题目及答案参考解析 启动xserver-mysql,进入xserver-mysql,开始实验,实验步骤如下: 1. ...

  8. Linux CentOS 使用Yum源安装MySQL 5.7

    在CentOS(Fedora.RedHat)系统中,可以使用yum install mysql命令来安装MySQL,但所安装的MySql版本一般都较旧,所以更推荐通过源码编译安装或下载最新rpm安装包 ...

  9. MySQL数据库安装后的安全设置

    导语: 已经通过报的方式安装了mysql,装完之后有些安全设置必须要做. 装完以后数据库已经可以使用了,但是有安全风险. 风险在访问数据库不需要任何信息就可以访问. [10:17:02 root@C8 ...

  10. 修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例

    修改ibdata1大小的验证 ibdata是共享表空间,在MySQL初始化的时候就生成了. 但很多童鞋会看到网上各种大神的调优建议,在MySQL已经初始化的情况下,修改配置文件中innodb_data ...

随机推荐

  1. JSP课设之项目管理

    一.准备: JDK1.8,eclipse,Tomcat(Web服务器),JDBC驱动(链接数据库) java+html+css+jsp+javabean+DAO+servlet 二.步骤: 1.装JD ...

  2. 2022-06-29:x = { a, b, c, d }, y = { e, f, g, h }, x、y两个小数组长度都是4。 如果有: a + e = b + f = c + g = d + h

    2022-06-29:x = { a, b, c, d }, y = { e, f, g, h }, x.y两个小数组长度都是4. 如果有: a + e = b + f = c + g = d + h ...

  3. vue入门第一坑:Eslint

    Eslint是语法检查插件,它会严格要求你的代码,就你本身代码没错,但是一运行,Eslint就跳出来报错了.它会自动检查你的代码是否符合规范.所以,建议新手入门Vue创建项目的时候可以关掉Eslint ...

  4. OpenStack云平台部署

    前言:本次部署采用系统的是Centos 8-Stream版,存储库为OpenStack-Victoria版,除基础配置,五大服务中的时间同步服务,七大组件中的nova服务,neutron服务,cind ...

  5. Redis数据结构三之压缩列表

    本文首发于公众号:Hunter后端 原文链接:Redis数据结构三之压缩列表 本篇笔记介绍压缩列表. 在 Redis 3.2 版本之前,压缩列表是列表对象.哈希对象.有序集合对象的的底层实现之一. 因 ...

  6. macbook苹果m1芯片训练机器学习、深度学习模型,resnet101在mnist手写数字识别上做加速,torch.device("mps")

    apple的m1芯片比以往cpu芯片在机器学习加速上听说有15倍的提升,也就是可以使用apple mac训练深度学习pytorch模型!!!惊呆了 安装apple m1芯片版本的pytorch 然后使 ...

  7. ubuntu18 安装单机k8s v1.18.2

    背景 当我们需要对k8s进行二次开发时,k8s环境是必须的,那么在ubuntu上部署单机k8s是最方便的,便于开发调试 系统准备 本人用的是Ubuntu18,以下以此为例 部署之前,最好切换至root ...

  8. Python Excel 操作 | xlrd+xlwt 模块笔记

    Python 的pandas模块使用xlrd作为读取 excel 文件的默认引擎.但是,xlrd在其最新版本(从 2.0.1 版本开始)中删除了对 xls 文件以外的任何文件的支持. xlsx fil ...

  9. 2023安洵杯web两道WP

    Web CarelessPy 在首页提示存在eval和login的路由,在download存在任意文件下载 访问eval可以读取目录下的文件,知道/app/pycache/part.cpython-3 ...

  10. SRE 的工作介绍

    哈喽大家好,我是咸鱼 今天看到了一篇很不错的文章,作者是一名 SRE 工程师,在 Shopee 工作,base 新加坡 分享出来给大家看看 作者:卡瓦邦噶 原文链接:https://www.kawab ...