[mysql]安全加固
前言
因等保安全的要求,需要对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;
配置密码复杂度
- 查看相关参数
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 |
- 修改密码长度参数,至少12位
SET GLOBAL validate_password_length=12;
- 测试,创建用户
-- 用弱密码测试,应该会提示 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;
配置登录失败锁定
- 查看相关参数
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将延迟该连接请求。 |
- 修改connection_control_min_connection_delay参数的值为300000毫秒,即300秒、5分钟
set global connection_control_min_connection_delay=300000;
- 测试。使用错误的密码登录测试,错误登录三次后再登录会等待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]安全加固的更多相关文章
- lamp下mysql安全加固
lamp下mysql安全加固 1.修改root用户口令,删除空口令 缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母.数字和符号组成的不规律 ...
- Mysql安全加固
1.确保MYSQL_PWD环境变量未设置 描述 MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险. 加固建议 删除系统环境变量中MySQL密码(MYSQL ...
- 利用login-path对MySQL安全加固
Preface Connection security is one of the most important safety strategies which we should ...
- [Windows Server 2012] MySQL安全加固
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:MySQL ...
- Mysql 安全加固经验总结
本文为博主原创,转载请注明出处: 目录 1.内网部署Mysql 2. 使用独立用户运行msyql 3.为不同业务创建不同的用户,并设置不同的密钥 4.指定mysql可访问用户ip和权限 5. 防sql ...
- mysql常见安全加固策略
原创 2017年01月17日 21:36:50 标签: 数据库 / mysql / 安全加固 5760 常见Mysql配置文件:linux系统下是my.conf,windows环境下是my.ini: ...
- MYSQL数据库攻防与加固
这是“官方”原本的模样搬过来的..写的很粗略啊.还有篇详细的请查看:MySQL安全加固题目及答案参考解析 启动xserver-mysql,进入xserver-mysql,开始实验,实验步骤如下: 1. ...
- Linux CentOS 使用Yum源安装MySQL 5.7
在CentOS(Fedora.RedHat)系统中,可以使用yum install mysql命令来安装MySQL,但所安装的MySql版本一般都较旧,所以更推荐通过源码编译安装或下载最新rpm安装包 ...
- MySQL数据库安装后的安全设置
导语: 已经通过报的方式安装了mysql,装完之后有些安全设置必须要做. 装完以后数据库已经可以使用了,但是有安全风险. 风险在访问数据库不需要任何信息就可以访问. [10:17:02 root@C8 ...
- 修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例
修改ibdata1大小的验证 ibdata是共享表空间,在MySQL初始化的时候就生成了. 但很多童鞋会看到网上各种大神的调优建议,在MySQL已经初始化的情况下,修改配置文件中innodb_data ...
随机推荐
- C#使用词嵌入向量与向量数据库为大语言模型(LLM)赋能长期记忆实现私域问答机器人落地
本文将探讨如何使用c#开发基于大语言模型的私域聊天机器人落地.大语言模型(Large Language Model,LLM 这里主要以chatgpt为代表的的文本生成式人工智能)是一种利用深度学习方法 ...
- 【ATL】注册插件成功后自动设置浏览器允许弹出窗口注册表
STDAPI DllInstall(BOOL bInstall, LPCWSTR pszCmdLine) { HRESULT hr = E_FAIL; static const wchar_t szU ...
- 2021-07-02:正则表达式匹配。给定一个字符串s和一个匹配串p。“.“匹配单个字符。“*“匹配左边元素的多个字符。判断p是否匹配s。比如s=“ab“,p=“a.“,返回true。比如s=“ab“
2021-07-02:正则表达式匹配.给定一个字符串s和一个匹配串p."."匹配单个字符.""匹配左边元素的多个字符.判断p是否匹配s.比如s="ab ...
- lec-5-Policy Gradients
直接策略微分 Goal: idea:求最大值:直接求导 tip:利用log导数等式进行变换 具体推导: 理解策略梯度 假定开始policy服从高斯分布,采样得到回报,计算梯度,根据reward增加动作 ...
- upload-labs 第一关 前端验证绕过!
打开靶场发现只能上传jpg png gif 的文件格式的文件,我们想要上传上去的文件格式为php文件格式,首先在Notepad++里面打开图片,会出现很多乱码,我们在最后面添加漏洞语句<?php ...
- phpstudy-sqlilabs-less-1
题目:POST - Error Based - Double quotes- String - with twist 基于错误的双引号post型字符变形的注入 先抓下包,拿到格式 uname=1#&a ...
- 计蒜客蓝桥杯省赛模拟G
题目 一天蒜头君得到 n 个字符串 si,每个字符串的长度都不超过 1010. 蒜头君在想,在这 n 个字符串中,以 si 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来 n ...
- 代码随想录算法训练营Day36 贪心算法
代码随想录算法训练营 代码随想录算法训练营Day36 贪心算法| 435. 无重叠区间 763.划分字母区间 56. 合并区间 435. 无重叠区间 题目链接:435. 无重叠区间 给定一个区间的集合 ...
- Tomcat请求处理流程与源码浅析
系列文章目录和关于我 一丶Connector 在tomcat中,Connector负责开启socket并且监听客户端请求,返回响应数据. 其中: Endpoint:tomcat中没有这个接口,只有Ab ...
- 使用containerd从0搭建k8s(kubernetes)集群
准备环境 准备两台服务器节点,如果需要安装虚拟机,可以参考<wmware和centos安装过程> 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 mas ...