MySQL系列之身份鉴别(安全)

MySQL——用户数据 目录1、创建用户2、查询用户3、授权4、查看授权5、收回权限 1、创建用户 CREATE user ‘jack’@‘localhost’ IDENTIFIED by ‘123’; 2、查询用户 SELECT user,host FROM mysql.user; 3、授权 GRANT UPDATE(gdprice,gdquantity,gdcity) ON onlinedb.goods to ‘jack’@‘localhost’; 4、查看授权 SHOW GRANTS FOR ‘jack’@‘localhos 阅读详情

前言

MySQL的身份鉴别是数据库安全的核心命题之一。在每日“拧螺丝”的工作中,我们的开发人员可能会忽略这个问题。正因如此,博主以这个契机,向大家做一次专题介绍。看过此文,相信你能够“上应付得了等保,下对得起公司”。

在这里插入图片描述

Q:如何保障MySQL数据库身份鉴别的有效性

提示:本文示例均已MySQL5.7为例,通过root用户执行相关命令。

如何保障MySQL数据库身份鉴别,有很多手段进行识别。博主通过SQL的方式,进行逐一介绍。

一、有效性检查

1. 用户唯一

检查授权的用户是否唯一:

SELECT USER, HOST FROM mysql.user;

2. 启用密码验证

检查PLUGIN是否包含*_password:

-- mysql_native_password,身份验证插件
SELECT USER, HOST, PLUGIN FROM mysql.user;

3. 是否存在空口令用户

检查authentication_string是否存在空值:

-- authentication_string,加密后密码,即执行password()后的值
SELECT USER, HOST, PLUGIN, authentication_string FROM mysql.user;

4. 是否启用口令复杂度校验

检查validate_password插件,是否已启用:

-- 如果为空,证明未启用该插件
SHOW VARIABLES LIKE 'validate%';

5. 是否设置口令的有效期

-- 默认0,永不过期
SHOW VARIABLES LIKE '%default_password_lifetime%';

6. 是否限制登录失败尝试次数

-- 如为空,代表未设置,可无限尝试
SHOW VARIABLES LIKE '%connection-control-failed-connections-threshold%';

7. 是否设置(超过尝试次数)锁定的最小时长

-- 如为空,代表未设置,永不锁定
SHOW VARIABLES LIKE '%connection-control-min-connection-delay%';

8. 是否设置保持登录的有效期

-- 默认0,代表永不退出登录
SHOW VARIABLES LIKE '%wait_timeout%';

二、应对方案

针对第一部分的有效性检查中,涉及不满足的配置项,我们可以通过以下措施加以弥补。

1. 空口令问题

如存在空口令,可通过root执行以下命令:

alter user [USER]@[HOST] identified by '[PASSWORD]';

2. 口令复杂度

如未启用口令复杂度,可能会遇到暴力破解,因此建议设置相关项。

2.1 安装插件

MySQL默认预留了口令复杂度插件:validate_password。我们只需要通过root用户安装即可:

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

查看是否安装成功(如看到以下记录,代表成功):

SHOW VARIABLES LIKE 'validate%';

在这里插入图片描述

2.2 参数解释

为加深各位盆友的理解,博主对返回的参数加以说明。

2.2.1 validate_password_policy

MySQL的密码策略包含以下3种:
LOW 或 0
代表密码必须满足指定长度。
MEDIUM 或 1(默认)
代表密码必须至少包含1个大写字母、1个小写字母、1个数字和1个特殊字符。
STRONG 或 2
在满足MEDIUM的基础上,不允许存储在字典文件(dictionary file)中。

2.2.2 配套参数
参数名称用途
validate_password_length定义密码长度,默认8位,适用于LOW 策略。
validate_password_mixed_case_count定义大、小写字母的个数,默认1,适用于非LOW策略。
validate_password_number_count定义数字的个数,默认1,适用于非LOW策略。
validate_password_special_char_count定义特殊字符的个数,默认1,适用于非LOW策略。

2.3 调整参数

掌握了参数特征后,我们可以按需调整相关参数的值,以满足安全需要,执行命令如下:

--必须以root身份执行,且拥有super权限。
set global [具体参数名称]=[VALUE];

3. 口令有效期

如满足口令定期更换的安全要求时,必须设置口令的有效期:

-- 必须以root身份执行,设置有效期为90天
set global default_password_lifetime=90;

4. 设置登录失败处理

假如要求你限制登录失败的次数以及失败次数达到上限后锁定用户,你该怎么办?先不急,且听博主分解。

4.1 安装插件

满足上述要求,需要安装MySQL自带的插件:connection_control,命令如下:

-- 必须以root身份执行
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';

4.2 参数解释

参数名称用途
connection_control_failed_connections_threshold登录失败尝试次数,默认3,如0代表不限制。
connection_control_max_connection_delay登录失败次数满后,再次响应的最大延迟时间(毫秒),建议默认
connection_control_min_connection_delay登录失败次数满后,再次响应的最小延迟时间(毫秒)。

4.3 调整参数

掌握了参数特征后,我们同样可以按需调整相关参数的值,执行命令如下:

--必须以root身份执行,且拥有super权限。
set global [具体参数名称]=[VALUE];

5. 设置登录保持时间

设置保持登录的有效期,过期自动退出登录状态:

-- 必须以root身份执行,设置保持登录的有效期为1800秒
set global wait_timeout=1800;

结语

本文通过案例介绍的方式,针对MySQL不同的安全场景,制定差异化的解决办法。当然完成该过程离不开MySQL自带的插件或访问控制能力。
走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~


精彩回放


MySQL系列之数据授权(privilege)
MySQL系列之如何在Linux只安装客户端
MySQL系列之如何正确的使用窗口函数(基于8.0版本)
MySQL系列之数据导入导出
MySQL系列之索引入门(上)
MySQL系列之索引入门(下)


在这里插入图片描述

等保测评2.0:MySQL身份鉴别(上) 一、 说明 本篇文章主要说一下MySQL数据中身份鉴别控制点中a测评项的相关知识点和理解。 二、 MySQL用户 2.1. 用户身份标识 MySQL数据库对于用户的标识和其它数据库有些不一样,不仅仅是用户名,而是username + host。 MySQL数据中user表的一部分字段如下: 这三个用户的用户名虽然都是root,但其实是三个不同的用户,其密码也是单独设置的。 查询当前登录账户,也可以看到用户的标识组成为username+host: 2.2. 登录匹配机制 既然用户的标示是两个字段的组合,匹 阅读详情

相关推荐

等保测评(mysql)

的属主为新增帐户mysql.sys,mysql.session帐户用于会话管理,MySQL 8.0及以上进一步新增系统帐户mysql.infoschema。)数据库设置了符合安全性要求的connection_control_failed_connections_threshold及connection_control_min_connection_delay参数。)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

m0_52527037的博客 4021

初识MySQL

Java

qq_50692350的博客 1525

等保三级改造(MySQL)-1、身份鉴别

通过SSH登录服务器,然后通过命令行或Navicat等工具登录数据库,身份鉴别方式为用户名密码口令长度应在8位以上;口令复杂度需由数字、大小写字母、特殊字符2种或2种以上组合的方式;【需要安装插件validate_password】用如果需要卸载插件,执行如下指令安装后可通过命令查看已安装的MySQL插件:状态为ACTIVE表示已激活。再通过查询要求字符类型至少 3 种, SET GLOBAL validate_password_special_char_count = 3;

glisten0317的博客 54

mysql创建用户

符号表示通配符,意味着该用户可以从任何主机连接到 MySQL 数据库。如果您想限制该用户只能从特定的主机连接到 MySQL 数据库,您可以将。创建用户后,您需要授予该用户适当的权限,以便该用户可以执行所需的操作。在 MySQL 中,可以使用。的用户,并授予该用户在任何主机上连接到 MySQL 数据库的权限,密码为。请注意,在实际使用中,应该使用更强的密码来保护数据库的安全性。是该用户允许连接到 MySQL 数据库的主机名或 IP 地址,子句后面跟着的是该用户的密码。替换为该主机的 IP 地址或主机名。

u013493422的博客 945

Windows 11下manage-bde命令实战:BitLocker锁了别慌,手把手教你用命令行找回数据

本文详细介绍了在Windows 11系统下使用manage-bde命令解锁BitLocker加密驱动器的实战方法。通过命令行诊断、恢复密钥获取、解锁流程演示及高级故障排除,帮助用户在系统锁定后快速找回数据,特别适合IT技术人员和遇到紧急情况的用户。

weixin_30902251的博客 328

谈谈人大金仓数据库

人大金仓数据库(Kingbase)是国产自主研发的关系型数据库管理系统,兼容主流数据库语法,支持高并发、高安全性及国产化适配。该数据库提供完整的安装部署方案,包括环境准备、初始化配置和验证流程,并配备专业的数据迁移工具(KDMS)实现从Oracle/MySQL等数据库的平滑迁移。系统提供KStudio等图形化管理工具,支持性能监控、备份恢复等运维功能,同时具备性能调优、高可用架构、分区表管理等高级特性,满足政府、金融等领域的企业级需求。

蜚鸣的博客 2094

阿里基线安全

风险名称 检查项分类 检查项名称 检查项描述 风险等级 修复建议 阿里云标准-CentOS Li 身份鉴别 密码复...

大脸猫脸大 629

2026基金本子新规必看!聚焦四大底层问题,利用AI辅助分别破解提升中标率

我拟申报的研究主题为【明确的研究主题或关键词组合】。选题方向也是评审专家关注的核心之一,申报前可以检索近五年领域前人中标项目,分析现有研究的空白与不足,并结合自身研究基础选择 “人无我有、人有我优” 的细分方向,如果是交叉学科选题,则要阐述不同学科的融合逻辑与创新点。“推动国家战略”、“带来行业发展”等宏观表述,有很多同仁都喜欢用这类话术开篇,但实际上宏大叙事无法替代具体的真实科学问题,明确不了研究要解决的核心痛点,更没有说明问题的现实针对性,评审看了往往抓不到研究的核心价值。

智能AI让学术科研更容易 294

mysql基线检查工具_阿里云标准-Mysql安全基线检查

禁用local-infile选项 | 访问控制描述禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力加固建议编辑Mysql配置文件/my.cnf,在mysqld 段落中配置local-infile参数为0,并重启mysql服务:local-infile=0删除'test'数据库 | 服务配置描述测试数据库可供所有用户访问,并可用于消耗系统资源。删除测试数据库将减少M...

weixin_39805529的博客 278

【LAMMPS学习】四、运行 LAMMPS(2)命令行选项

本部分解释了在安装可执行文件或下载源代码并构建可执行文件后如何运行 LAMMPS。命令文档页面描述了输入脚本的结构以及它们可以包含的命令。

荷塘阅色 5242

【C语言】字符常量详解

字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。

LuckiBit 5017

等保测评命令——华为 GaussDB 系列

本文基于GB/T22239-2019等保三级要求,针对华为GaussDB系列数据库提供了一套可直接落地的安全配置检查清单。内容包括身份鉴别(空口令检查、密码复杂度等)、访问控制(三权分立、权限管理等)、安全审计(审计开关、日志保护等)等8个安全控制点的测评命令和达标判据。所有命令已在openGauss3.1.0/GaussDBT1.4.x/GaussDBA2.0环境验证通过,并附一键巡检脚本。重点要求:审计必须启用、三权分立严格实施、异地备份必须配置。对于高风险项(如审计未启用)直接判定不符合三级要求。

好学分子的博客 819

【打卡帖】7日玩转ESP32——(第4日) 串口的输入输出

【福利帖】7日玩转ESP32——(第4日) 串口的输入输出

1376

OceanBase 安全体系解析之身份鉴别

​ 本文以MySQL为参照,详细阐述了OceanBase在MySQL模式下的安全体系中,身份鉴别的能力,涵盖了身份鉴别机制、用户名的构成规则、密码的复杂度,以及密码过期策略的等方面

OceanBase分布式数据库的博客 1808

iOS远程真机之WebDriverAgent 天坑记

一、WDA安装依赖报错:       这个东西神坑,我搞了一天都没找到解决方案,最后在appium讨论中发现,       解决方案是:       先定位到WebDriverAgent 所在路径$ cd /Users/XXXX/git/WebDriverAgent        然后运行:mkdir -p Resources/WebDriverAgent.bundle sh ./Scripts/b

甫式人生 7316

pnpm 卸载教程:彻底移除 pnpm 及全局缓存的方法

卸载 pnpm = 全局包 → CLI → 环境变量 → store 缓存只要按这个顺序来,基本不会留下任何坑。如果你后面还打算重新安装 pnpm / 切换 npm、yarn / 多包管理器共存,这些细节反而更重要,环境一旦干净,后续问题会少很多。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 925

OceanBase 安全审计之身份鉴别

本文主要以 MySQL 和 OceanBase 对比的方式,来介绍 OceanBase(MySQL 模式)安全体系中关于身份鉴别的相关内容,包括身份鉴别机制、用户名组成、密码复杂度、密码过期策略等。作者:金长龙爱可生测试工程师,负责 DMP 产品的测试工作。

ActionTech的博客 1288

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: MySQL系列之数据授权(安全)
下一篇: MySQL系列之远程管理(安全)
一叶飞舟
一叶飞舟 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄16年 6566粉丝 140原创
评论 74
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值