MySQL 8.0 新密码策略的细节补充

news2024/11/25 14:32:14

前情提要

MySQL 8.0 截⽌到⽬前已经发布到了 8.0.34 版本,经过一系列的版本更新,对于密码方面也做了较多的加强⼯作,这⾥我们不再过多介绍 MySQL 8.0 对于密码功能的加强,相关的介绍可以移步先前公众号的⽂章,这⾥给到相关链接:

新特性解读 | MySQL 8.0 新密码策略(上)

新特性解读 | MySQL 8.0 新密码策略(中)

新特性解读 | MySQL 8.0 新密码策略(下)

新特性解读 | MySQL 8.0 新密码策略(终篇)

文章背景

这篇文章主要针对密码相关的几个参数的使用细节做一些验证和分析,给大家分享下实际使用的经验,首先我们看下 MySQL 8.0 版本的 CREATE USER 语法中 password_option 部分的语法结构。

-- MySQL 8.0(新增了不同维度的密码控制)
password_option: {
PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]
| PASSWORD HISTORY {DEFAULT | N}
| PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
| PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]
| FAILED_LOGIN_ATTEMPTS N
| PASSWORD_LOCK_TIME {N | UNBOUNDED}
}

-- MySQL 5.7(只包含密码过期属性配置)
password_option: {
PASSWORD EXPIRE
| PASSWORD EXPIRE DEFAULT
| PASSWORD EXPIRE NEVER
| PASSWORD EXPIRE INTERVAL N DAY
}

其中 MySQL 8.0 版本 CREATE USER 语法的前 4 个密码属性则是本⽂第⼀个讨论的细节点,其属性对应的 MySQL 全局参数及含义分别为:

参数名默认值mysql.user 表对应字段含义
default_password_lifetime0password_lifetime全局设置密码的有效期
password_history0password_reuse_history全局设置历史密码使用过的密码不可被重用的条数
password_reuse_interval0password_reuse_time全局设置历史密码要经过多长时间才能被重用
password_require_currentOFFpassword_require_current全局设置修改密码时需不需要提供当前密码

误区 1

mysql.user 中密码相关选项对应字段为 NULL 时的含义。

验证过程

我们基于这 4 个密码属性设置具体的值,设置后配置如下图所示。

创建⼀个新⽤户不指定任何⽤户密码属性。

在创建完⽤户后,查看 mysql.user 表中对应字段显示值均为 NULL。

全局配置的 4个属性没生效?

如果⽣效应该要自动在创建⽤户时配置为对应值才对。基于这个逻辑去理解还造成了另⼀层误解:新配置的密码全局属性对于历史已创建的⽤户不⽣效。

是不是还需要对已存在的⽤户⽤ ALTER USER 单独做处理?

随着这个疑问越想越不对,如果全局配置在新创建用户时还不生效,那什么时候生效,岂不是失去了意义?进一步查看官⽅⽂档 对 mysql.user 表对应字段值含义的描述后得到了答案。 原⽂描述如下,翻译过来就是:如果这 4 个值在表中为 NULL,并不是配置未生效,而是表示其继承全局密码策略配置。

小结

官方文档看的不够仔细,误解了 NULL 值的含义(关键原因),但确实容易踩到这个“坑”。这里也贴一下全局参数和单⽤户属性配置的生效对应表做参考。

建议使用 PC 端查看

误区 2

这里虽然描述为误区,其实我理解是文档描述的不完善。我们先看下文档的描述,翻译过来是:可以⽤这 2 个参数来控制历史密码可被重用的策略:一个是基于次数策略,一个是基于时间策略。可以同时配置,如:禁止用最后 6 次密码或者 365 天内设置过的密码,可以看到两个参数是一个或者的逻辑。

实际验证场景

场景 1

password_history > 0 and password_reuse_interval = 0

结论:历史密码次数 控制策略生效,符合预期。

场景 2

password_history = 0 and password_reuse_interval > 0

结论:历史密码时间 控制策略生效,符合预期。

场景 3

password_history > 0 and password_reuse_interval > 0

结论:历史密码时间 控制策略生效,历史密码次数 控制策略不生效,mysql.password_history 将记录指定时间内的所有密码且均不能被重用。

小结

  • password_reuse_interval 对于时间的控制策略优先级⾼于 password_history 对于次数的控制。
    • 两者并不是同时⽣效,两个参数同时配置时,取的是更严格的那个配置作为⽣效的策略。
  • 策略本质上对使⽤和功能上没影响。

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch 多卡并行(3)—— 使用 DDP 加速 minGPT 训练

前文 并行原理简介和 DDP 并行实践 和 使用 torchrun 进行容错处理 在简单的随机数据上演示了使用 DDP 并行加速训练的方法,本文考虑一个更加复杂的 GPT 类模型,说明如何进行 DDP 并行实战MinGPT 是 GPT 模型的一个流行的开源 PyTorch 复现项目&#xff…

paddleocr关闭log日志打印输出

问题背景 问题分析 可以看到paddleocr输出logging主要有两种,DEBUG和WARNING,因此关闭这两种打印日志即可。 解决方法 import logginglogging.disable(logging.DEBUG) # 关闭DEBUG日志的打印 logging.disable(logging.WARNING) # 关闭WARNING日志的…

Python二分查找详解

在计算机科学中,二分查找算法(英语:binary search algorithm),也称折半搜索算法(英语:half-interval search algorithm)、对数搜索算法(英语:logarithmic sea…

Pyinstaller打包EXE时添加版本信息、作者信息并在运行时读取外部配置文件

🧑‍💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…

亚马逊气候友好认证

“气候友好承诺认证”是亚马逊推出的Climate Pledge Friendly新环保计划。目的是帮助有环境意识、注重绿能的买家更好地找到带认证产品,品牌可以通过确保在亚马逊上销售的产品至少在可持续发展的一个方面得到认证,来参与并为他们的产品获得一个气候友好承…

ORA-32771 cannot add file to bigfile tablespace

ORA-32771 cannot add file to bigfile tablespace 扩容表空间报错 原因 oracle中有两种表空间类型BIGFILE 大文件表空间:只能包含1个大文件(最大尺寸为128 TB) SMALLFILE 小文件表空间:可包含多个数据文件(默认)表空间在创建的时候就会确定好&#xf…

OpenCV(三十八):二维码检测

1.二维码识别原理 功能图形: 位置探测图形:通常,二维码中有三个位置探测图形,呈现L型或大角度十字架形状,分布在二维码的三个角上,用于帮助扫描设备定位二维码的位置和方向。 位置探测图形分隔符&#xf…

2023工博会,正运动机器视觉运动控制一体机应用预览(二)

展会倒计时:7天 本次的中国国际工业博览会正运动技术将携高性能x86平台Windows实时视觉运动控制器VPLC711亮相。 •运动控制机器视觉一站式开发,缩短开发周期,降低硬件成本; •可替代传统的工控机运动控制卡/PLC视觉软件的自动化…

Fultter学习日志(2)-构建第一个flutter应用

依照上一篇中我们新建的flutter应用 让我们更改pubspec.yaml中的内容为 name: namer_app description: A new Flutter project.publish_to: none # Remove this line if you wish to publish to pub.devversion: 0.0.11environment:sdk: >2.19.4 <4.0.0dependencies:fl…

SpringBoot整合Easy-ES实现对ES操作

请确保已有可用的ES&#xff0c;若没有&#xff0c;请移步&#xff1a;Docker安装部署ElasticSearch&#xff08;ES&#xff09; 新建SpringBoot项目 这里是用的springboot版本是2.6.0 引入依赖 <!-- 排除springboot中内置的es依赖,以防和easy-es中的依赖冲突--><…

0基础学习VR全景平台篇 第99篇:百度地图如何上传全景图

蛙色平台现已打通VR全景入驻百度地图全流程&#xff0c;百度全景分为免费版和付费版两种&#xff0c;其中付费支持配置作品音乐、场景漫游热点、联系电话、描述信息。 百度地图上传案例 免费版 付费版 一、百度地图上传流程 1、进入蛙色VR账号后台 &#xff08;1&#xff…

Fiddler抓取HTTPS 详解

对于想抓取HTTPS的测试初学者来说&#xff0c;常用的工具就是fiddler。 但是初学时&#xff0c;大家对于fiddler如何抓取HTTPS难免走歪路&#xff0c;也许你一步步按着网上的帖子成功了&#xff0c;这自然是极好的。 但也有可能没那么幸运&#xff0c;这时候你就会很抓狂。 …

华为云云服务器云耀L实例评测 | 华为云云服务器实例新品全面解析

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

分享一下在微信商城上怎么可以快速实现分销功能

微信商城上的分销功能是一种吸引更多用户和提升销售的方式&#xff0c;通过搭建一个以分销为主的平台&#xff0c;商家可以借助用户的力量来推广自己的产品或服务。下面将介绍在微信商城上如何实现分销功能&#xff0c;包括分销模式的选择、开发流程和推广方法。 一、选择适合的…

BUG定位分析方法

作为测试人员&#xff0c;接触最多的就是bug&#xff0c;怎样才能体现出测试人的专业性&#xff1f;能够精准的定位并分析bug一定是你的加分项。 在什么地方干了什么产生了什么结果&#xff0c;和期望的结果不一致&#xff0c;那么这就是一个bug。人人都能找出bug&#xff0c;…

【SpringMVC】JSR 303与拦截器注释使用

目录 一、JSR 303 1.1 JSR 303介绍 1.2 为什么要使用JSR-303 1.3 常用注解 1.4 使用示例 1.4.1 导入JSR303依赖 1.4.2 配置校验规则 1.4.3 编写方法校验 1.4.4 编写前端 1.4.5 测试 ​编辑 1.5 Validated与Valid区别 二、拦截器&#xff08;interceptor&#xff09…

SpringBoot2.0入门(详细文档)

文章目录 Springboot是什么Springboot2.x依赖环境和版本新特性说明为什么学习Springboot从springboot优点来看从未来发展的趋势来看 开发环境Spring Boot开发环境搭建和项目启动jdk 的配置Spring Boot 工程的构建maven配置IDEA 快速构建maven 创建工程常用注解 完整代码 Spring…

延迟win11的更新

自从升级到win11之后&#xff0c;发现更新插件的频率高得有点过分,每隔几天就是一次. 我看网上有人能把更新时间延迟几十万年,所以我心动了! 我试了一下:成功延迟到2099年 创建一个文本文件&#xff0c;命名为&#xff1a;“stopupdate.reg”&#xff0c;然后用记事本或者代码…

SpringMVC之入门:springmcx工作流程,springmvc的入门,静态资源处理器

springmvc工作流程springmvc的入门静态资源处理 1.springmvc工作流程 自定义mvc流程&#xff1a;1.客户端浏览器发送请求url http://localhost:8080/mvc/book.action?methodNamelist 2.被中央控制器dispatchServlet接收 *.action 将url处理&#xff0c;截取得到 *(/book) 3.通…

水循环原理VR实景教学课件开发

日本核污水排海让人们越来越重视海洋大气层水循环的安全&#xff0c;水循环是一个周而复始、循环往复的动态过程&#xff0c;为了将水循环过程以形象、生动地形式展示出来&#xff0c;水循环VR全景动态演示逐渐受到大家青睐。 传统的水循环教育方式通常是通过图片、动画或实地考…