[mysql]安全加固

简介: [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;

配置密码复杂度

  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

参考

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 SQL 安全
MySQL 安全加固配置(等保二级)
数据库安全是等保测评和网络安全中的重要的一项内容,本文介绍一些常见的加固配置。
5392 0
|
5月前
|
人工智能 Linux API
喂饭级教程:OpenClaw(大龙虾)云端/本地部署+五大应用场景+配置阿里云百炼Coding Plan及常见问题解答
2026年,开源AI智能体OpenClaw(曾用名ClawdBot、MoltBot,因Logo酷似小龙虾被网友亲切称为“大龙虾”)以“行动式AI”的鲜明定位爆红全网。它打破了传统“对话式AI”仅能答疑的局限,通过极简的Pi引擎架构与丰富的Skills生态,让非技术用户也能轻松拥有7×24小时运行的“个人AI员工”,覆盖个人办公、企业协作、开发运维、生活效率、创新应用五大核心场景。
1747 5
|
负载均衡 安全 容灾
虚拟专线设备端配置指南 (无影 x iKuai)
本文档主要介绍AL88系列设备的环境准备、上网配置及插件配置。环境准备包括个人电脑、网线、设备及互联网连接;上网配置涵盖设备拆箱检查、通电接线、浏览器登录管理后台和内外网设置;插件配置则通过高级应用完成无影虚拟专线的绑定。
|
7月前
|
人工智能 运维 测试技术
2026年阿里云无影AgentBay构建企业版Moltbot(原Clawdbot)部署教程
阿里云无影AgentBay是面向企业级场景的Agent开发与管理平台,集成开发套件、算力调度、权限管控等核心能力,可快速构建适配企业需求的定制化AI代理。2026年,依托无影AgentBay部署企业版Moltbot(原Clawdbot),能实现任务自动化、跨系统协同、数据安全管控等企业级功能,适配办公自动化、研发辅助、客户服务等多场景。本文严格依据官方部署逻辑,拆解从环境准备到功能上线的全流程,全程无营销词汇,确保信息原汁原味、可直接落地。
466 1
|
存储 监控 安全
在Linux中,如何进行日志审计?
在Linux中,如何进行日志审计?
|
安全 关系型数据库 MySQL
mysql 安装插件 validate_password
mysql 安装插件 validate_password
1315 0
|
Linux
Linux下显示cp/mv进度的两种方式
Linux下显示cp/mv进度的两种方式
12199 0
Linux下显示cp/mv进度的两种方式
|
数据安全/隐私保护
github报错(完美解决):获取token。remote: Support for password authentication was removed on August 13, 2021.
这篇文章介绍了如何在GitHub上解决因密码认证被移除而导致的推送错误,通过创建和使用个人访问令牌(token)来代替密码进行身份验证。
4953 0
|
存储 运维 安全
等保测评是什么?(非常详细)零基础入门到精通,收藏这一篇就够了
等保测评是什么?(非常详细)零基础入门到精通,收藏这一篇就够了
2976 4

热门文章

最新文章