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

MySQL 8.0密码策略详解:解决ERROR 1819报错的三种实战方案 数据库安全是系统架构中的重要环节,其中密码策略作为基础防护机制,通过预设规则强制用户设置复杂密码,有效防止暴力破解。其原理通常基于密码复杂度检查组件,对长度、字符类型、字典匹配等维度进行校验。在MySQL 8.0中,这一机制通过validate_password组件实现,为数据库账户安全提供了标准化保障。对于开发者而言,理解并妥善处理密码策略,能避免在用户管理、应用部署等场景中因密码不符合要求而导致的运维中断。本文聚焦MySQL 8.0默认启用的密码策略组件,针对常见的ERROR 1819报错,提供创建强密 阅读详情

前情提要

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
MySQL 8.0密码策略详解:从ERROR 1819到安全配置实践 数据库安全是系统架构的基石,其中身份验证与访问控制是核心防线。密码策略作为身份验证的关键环节,其原理是通过预定义的复杂度规则评估密码强度,防止因弱密码导致的数据泄露风险。在技术价值层面,强密码策略能有效抵御暴力破解和字典攻击,为数据库系统建立第一道安全屏障。MySQL 8.0默认启用的validate_password组件正是这一理念的工程实践,它通过密码长度、字符混合度、字典检查等多维度评估,将安全要求从可选变为默认强制。对于开发者而言,理解其MEDIUM、LOW、STRONG三级策略配置,掌握通过系统变 阅读详情

相关推荐

CentOS 8 部署 MySQL 8.0:DNF 模块化安装与初始化实战

MySQL 是最主流的开源关系型数据库,其在 Linux 系统中的部署涉及包管理、服务初始化、权限控制与安全策略等核心运维能力。CentOS 8 引入 DNF 模块流(Module Streams)机制,彻底替代传统 YUM 安装逻辑,要求用户显式启用 mysql:8.0 模块并使用 @mysql 安装组,否则将因仓库未激活或版本歧义导致安装失败。该机制不仅提升多版本共存能力,更通过 GPG 签名、SELinux 原生策略集成和 dnf update 自动化更新,保障生产环境可审计性与可维护性。典型应用场景

weixin_30279671的博客 344

MySQL8.0.12版本密码修改策略问题

注:8.0.13 win10 版本不需要修改,8.0.13linux还需要 查看密码策略(修改临时密码之后才可查看) show variables like 'validate_password%'; 8之前validate_password_ 8之后validate_password. 修改密码策略 setglobalvalidate_password.policy=0;...

吕小小布的博客 5719

龙蜥Anolis 8.8 部署MySQL 8.0:从官方源配置到服务启动全流程

本文详细介绍了在龙蜥Anolis 8.8系统上部署MySQL 8.0的全流程,包括官方源配置、模块冲突解决、服务初始化、安全配置及远程访问设置。通过实战步骤和常见问题排查,帮助用户高效完成MySQL安装与优化,适用于开发和生产环境。

weixin_32183107的博客 162

MySQL8 密码安全策略配置

MySQL8 密码安全策略配置。

blvyoucan的专栏 2872

MySQL Workbench 8.0 CE 安装避坑指南:从下载到连接数据库的完整流程

本文详细介绍了MySQL Workbench 8.0 CE的安装流程,从下载到连接数据库的全过程,特别针对Windows环境下的常见问题提供解决方案。内容包括版本选择、安装模式、服务配置、连接测试及故障排除,帮助用户顺利完成MySQL Workbench的安装与配置。

weixin_30402343的博客 642

CentOS 8 LEMP部署实战:Nginx+PHP-FPM+MySQL 8.0原生配置指南

LEMP(Linux+Nginx+MySQL+PHP)是构建高性能Web服务的基础技术栈,其核心在于事件驱动架构与系统级协同。Nginx依托epoll机制实现高并发处理,PHP-FPM通过动态进程池管理请求生命周期,MySQL 8.0默认utf8mb4字符集和caching_sha2_password认证提升数据安全与兼容性。在CentOS 8这一广泛用于企业生产环境的系统上,需特别关注SELinux上下文配置、Unix socket权限衔接及dnf包管理下的版本约束。本文聚焦真实运维场景,覆盖ThinkP

486

MySQL8.0 密码管理与密码策略

MySQL8.0 密码管理与密码策略 说明 MySQL 的版本在 8.0 以上。本文使用的版本是 8.0.13 这个版本。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.13 | +-----------+ 1 row in set 密码管理 在 mysql 8.0 中新增了三个变量,用于对密码的管理: ## 新密码不能和前面三次的密码相同 password_history = 3 ; #

qq_38766930的博客 2586

用VINS-Fusion跑通EuRoC数据集:Ubuntu22.04+ROS2环境下的保姆级评测指南

本文详细介绍了在Ubuntu22.04和ROS2 Humble环境下使用VINS-Fusion处理EuRoC数据集的完整流程。从环境配置、数据集转换到参数调优和性能评估,提供了一套全面的多传感器融合分析方案,帮助开发者在无人机精准定位场景中实现高效部署与优化。

weixin_29212867的博客 517

修改Mysql8.0密码不满足当前策略要求解决方法

错误类型: 原因:密码不满足当前策略要求。 解决方法: 在mysql中输入: SHOW VARIABLES LIKE 'validate_password%'; 可以看到当前密码长度要求为8,安全等级为MEDIUM,我们把长度改为4,等级改为LOW 8.0版本输入命令: set global validate_password.policy=LOW; set global va...

江冷易水寒 4290

ROS相机内参标定详细步骤指南

相机标定的目的是为了确定相机内部参数和外部参数,以便修正图像并将图像坐标映射到世界坐标,或者从世界坐标映射到图像坐标。这个过程是计算机视觉和三维感知任务的关键步骤之一,它有以下主要目的: 1. **减小畸变**:相机镜头和传感器可能引入径向和切向畸变,使得图像中的直线变得弯曲或者物体的形状不准确。通过标定相机,可以矫正这些畸变,使图像更准确。

m0_56661101的博客 1万+

基于ESP32的无线DMX节点设计:从Art-Net/sACN到DMX512的协议转换与实现

在舞台灯光和建筑照明控制系统中,DMX512是行业标准的数字调光协议,用于控制灯具的亮度、颜色和效果。其原理是通过RS-485差分信号串行传输512个通道的数据,每个通道对应一个控制值。然而,传统有线DMX布线复杂、成本高,在移动装置、历史建筑或临时活动中部署困难。为解决此问题,业界发展出了基于以太网的灯光控制协议,如Art-Net和sACN(E1.31),它们将DMX数据封装在UDP包中,通过网络传输。这项技术的核心价值在于实现了灯光控制的网络化与无线化,大幅提升了系统的灵活性和部署效率。其典型应用场景包

weixin_30175731的博客 227

Mysql 8.0.1修改密码策略

参考文档 1:Mysql 8.0.1 官网文档 参考文档 2:Linux安装后修改Mysql密码策略 文档2对修改mysql的密码策略做了很好的总结,但,注意一点,在mysql8.0.1中密码策略变量的变化;由“_”连接符改变为"."连接符;如下: validate_password_length 改变为: validate_password.length ----------------...

coolcoffee168的专栏 960

探索Three.js:利用ShaderMaterial实现动态着色器特效

本文深入探讨了Three.js中ShaderMaterial的应用,指导开发者利用GLSL编写自定义着色器实现动态特效。文章从核心概念GLSL、Uniforms与Attributes讲起,通过创建动态颜色变化平面的实战案例,逐步进阶到实现波纹扩散与动态光影等高级效果,并提供了性能优化与调试技巧,帮助读者掌握创建高性能WebGL视觉特效的关键技能。

weixin_29250403的博客 201

MySQL 8.0新密码策略的细节场景讲解

技术社群的这篇文章《新特性 | MySQL 8.0 新密码策略的细节补充》,讲解介绍了MySQL 8.0数据库新密码策略的一些细节场景,值得借鉴学习。MySQL 8.0 截止到目前已经发布到了 8.0.34 版本,经过一系列的版本更新,对于密码方面做了较多的加强。这篇文章主要针对密码相关的几个参数的使用细节做了一些验证和分析,给各位分享下实际使用的经验,首先我们看下 MySQL 8.0 版本的C...

bisal的专栏 224

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载)

关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系

qq_33328642的博客 5858

华为海思IC设计岗位笔试全解析:物理、电路与工艺三大方向备考指南

本文全面解析华为海思IC设计岗位笔试的物理、电路与工艺三大方向备考要点。针对物理设计方向,重点讲解半导体能带理论、载流子输运机制等核心考点;电路设计方向涵盖Verilog语法、UVM验证等关键技术;工艺方向则深入探讨FinFET工艺、光刻技术等前沿知识。提供高效备考策略和应试技巧,助力考生提升通过率。

weixin_29196613的博客 1084

MySQL 8.0 Root密码修改全攻略:从原理到实战,解决认证插件与密码策略难题

数据库用户身份验证是数据安全的核心环节,其原理涉及密码哈希、权限校验与网络通信协议。在MySQL 8.0中,默认的caching_sha2_password认证插件与validate_password密码强度组件构成了新的安全技术栈,显著提升了防暴力破解与密码泄露风险的能力。这一升级对自动化运维与CI/CD流程提出了新的兼容性挑战,尤其在容器化部署与高可用集群场景下,密码的安全修改与同步成为关键运维操作。本文将围绕MySQL 8.0的root密码管理,深入解析caching_sha2_password插件的

weixin_33585822的博客 271

WPF实现圆形菜单动态展开折叠效果

实现效果如下: 思路:根据子菜单个数计算旋转角度动态生成子菜单,并设置展开折叠动画。 步骤: 1、自定义按钮MyButton,建立展示图像属性DisplayImage public class MyButton : Button { public static readonly DependencyProperty DisplayImageProperty = DependencyProperty.Register("DisplayImage", typeof(

dnazhd的博客 3149

MySQL8.0.26 出现错误#1045

摘要: MySQL 8.0.26错误#1045(用户访问被拒绝)是常见连接故障,主要由用户名/密码错误、主机限制、认证插件不兼容或权限未刷新导致。本文系统分析其核心原因,并提供分步解决方案: 密码错误:通过ALTER USER重置密码并刷新权限; root密码丢失:需跳过权限表启动MySQL服务,强制修改密码; 插件不兼容:将认证插件改为mysql_native_password或升级客户端; 主机限制:调整用户访问主机范围。针对不同场景,详细说明了命令行操作步骤,帮助快速恢复数据库连接。适用于开发、测试及

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 394

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux yum部署mysql8.0并添加操作用户

养成良好的记录习惯 时间:2019年10月12日 作者:黄黄 邮箱:15797683468@163.com(可指出问题相互交流) ##1.安装MySQL的yum源 yum localinstall https://dev.mysql.com/get/ mysql80-community-release-el7-1.noarch.rpm ##2.安装MySQL yum install mysql-...

qq_42329675的博客 448

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

linux sql增加用户,linux yum部署mysql8.0并添加操作用户

养成良好的记录习惯时间:2019年10月12日作者:黄黄1.安装MySQL的yum源yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm2.安装MySQLyum install mysql-community-server3.进行mysql8.0一些小细节的设置设置是否区分表名大小...

weixin_39655085的博客 221

CentOS 8 安装 MySQL 8.0 完整指南:系统级部署与安全配置

MySQL 是最主流的开源关系型数据库,CentOS 8 作为企业级 Linux 发行版,其模块化(DNF Modules)和默认 MariaDB 替代机制使原生 MySQL 部署不再简单。理解底层原理——如 GPG 密钥验证保障软件来源可信、SELinux 上下文控制进程访问权限、caching_sha2_password 认证插件提升密码安全性——是构建稳定数据库服务的基础。该技术方案具备明确工程价值:规避因仓库冲突导致的版本误升级、防止因权限/监听配置错误引发的安全暴露与连接失败,并支撑云迁移、中间件

culi3118的博客 496

MySQL 8.0 环境配置的隐藏陷阱:避开新手常踩的10个‘坑’

本文详细解析了MySQL 8.0环境配置中的10个常见陷阱,包括安装包选择、认证插件、数据目录权限等关键问题。针对每个问题提供具体解决方案和最佳实践,帮助开发者避免部署过程中的常见错误,确保数据库稳定运行。特别适合MySQL新手和需要进行版本升级的开发者参考。

weixin_29230901的博客 339

MySQL新密码机制介绍caching_sha2_password

MySQL新密码机制介绍caching_sha2_password

weixin_49319422的博客 5014

Mac安装MySQL与Navicat连接全攻略:解决8.0认证插件等常见坑

数据库是软件开发的核心组件,MySQL作为最流行的开源关系型数据库,其安装与配置是开发者必备技能。在macOS系统中,通过Homebrew包管理器可以便捷安装MySQL,但版本升级与系统安全机制常带来兼容性挑战。MySQL 8.0引入的caching_sha2_password身份验证插件提升了安全性,却导致Navicat等传统客户端连接失败,这体现了数据库安全策略与工具生态适配的技术博弈。通过创建使用mysql_native_password插件的专用用户,既能保障root账户安全,又能实现Navicat

weixin_34379433的博客 354
上一篇: OceanBase 单机租户最多能支持多少分区?
下一篇: OceanBase 安全审计之透明加密
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值