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

linux(centos7)下mysql8.0的密码重置 linux(centos7)下mysql8.0密码重置 安装步骤1 下载镜像 wget http://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm 安装 rpm -ivh mysql80-community-release-el8-1.noarch.rpm yum install mysql-server 权限设置 chown -R mysql:mysql /var/lib/mysql 初始化 mysqld --initialize 阅读详情

作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


本篇继续介绍 MySQL 8.0 的新密码验证策略。

假设有这样的需求: 管理员分别创建了一个开发用户与运维用户,并且要求这两个用户必须满足如下需求,

  1. 开发用户要求定期更改密码,并且密码不能与近期更改过的密码重叠,也即不能复用历史密码,这里限定历史密码个数为3;

  2. 运维用户同样要求定期更改密码,并且密码不能与某段时间内更改过的密码重叠,也即同样不能复用历史密码,这里限定时间段为一个礼拜。

以上两种改密码需求,在数据库侧暂时无法实现,只能拿个**”小本子记住历史密码保留个数、历史密码保留天数“**,在用户每次更改密码前,先检测小本子上有没有和新密码重叠的历史密码。

MySQL 8.0 对以上这两种改密码需求,直接从数据库端实现,用户可以扔掉“小本子”了。

我来分两部分讲解在 MySQL 8.0 版本里对以上改密码需求的具体实现。

第一,在配置文件里写上全局参数

参数 password_history 表示最近使用的密码保留次数;

参数 password_reuse_interval 表示最近使用的密码保留天数。

先来实现开发用户的需求:保留历史密码个数为3。

管理员用户登录,设置全局参数:

mysql:(none)>set persist password_history=3;
Query OK, 0 rows affected (0.00 sec)

退出重连,创建用户 ytt_dev :

root@ytt-ubuntu:/home/ytt# mysql -S /opt/mysql/mysqld.sock
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 33
Server version: 8.0.27 MySQL Community Server - GPL

...

mysql:(none)>create user ytt_dev identified by 'root123';
Query OK, 0 rows affected (0.15 sec)

退出连接,用户 ytt_dev 重新连接数据库,并且更改两次密码:

root@ytt-ubuntu:/home/ytt# mysql -uytt_dev -hytt-ubuntu -proot123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 8.0.27 MySQL Community Server - GPL

...

mysql:(none)>
mysql:(none)>alter user ytt_dev identified by 'root456';
Query OK, 0 rows affected (0.03 sec)

mysql:(none)>alter user ytt_dev identified by 'root789';
Query OK, 0 rows affected (0.17 sec)

加上原始密码,也就是3次密码,再来更改一次密码,此时不允许更改密码,错误提示和密码历史策略冲突:

mysql:(none)>alter user ytt_dev identified by 'root123';
ERROR 3638 (HY000): Cannot use these credentials for 'ytt_dev@%' because they contradict the password history policy

接下来,选择一个与历史密码不冲突的新密码进行修改,此时密码修改成功:

mysql:(none)>alter user ytt_dev identified by 'rootnew';
Query OK, 0 rows affected (0.04 sec)
再来实现运维用户的需求:保留密码天数为7天。

同样,管理员用户登录 MySQL ,并且设置全局参数:

mysql:(none)>set persist password_reuse_interval = 7;
Query OK, 0 rows affected (0.00 sec)

mysql:(none)>set persist password_history=default;
Query OK, 0 rows affected (0.00 sec)

退出重新连接,创建运维用户 ytt_dba :

mysql:(none)>create user ytt_dba identified by 'root123';
Query OK, 0 rows affected (0.01 sec)

mysql:(none)>\q
Bye

以用户 ytt_dba 登录数据库,并且改了五次密码:

root@ytt-ubuntu:/home/ytt# mysql -uytt_dba -hytt-ubuntu -proot123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 8.0.27 MySQL Community Server - GPL

...

mysql:(none)>alter user ytt_dba identified by 'root456';
Query OK, 0 rows affected (0.15 sec)

mysql:(none)>alter user ytt_dba identified by 'root789';
Query OK, 0 rows affected (0.08 sec)

mysql:(none)>alter user ytt_dba identified by 'root000';
Query OK, 0 rows affected (0.02 sec)

mysql:(none)>alter user ytt_dba identified by 'root888';
Query OK, 0 rows affected (0.02 sec)

mysql:(none)>alter user ytt_dba identified by 'root999';
Query OK, 0 rows affected (0.12 sec)

接下来验证历史密码验证策略,由于我们设置了密码历史保留天数,任何在设定时间内的历史密码,均不能作为新密码使用:MySQL 拒绝用户更改密码,错误提示与密码历史策略冲突:

mysql:(none)>alter user ytt_dba identified by 'root123';
ERROR 3638 (HY000): Cannot use these credentials for 'ytt_dba@%' because they contradict the password history policy
mysql:(none)>alter user ytt_dba identified by 'root456';
ERROR 3638 (HY000): Cannot use these credentials for 'ytt_dba@%' because they contradict the password history policy
mysql:(none)>

选择一个非最近更改过的新密码,改密成功:

mysql:(none)>alter user ytt_dba identified by 'rootnew';
Query OK, 0 rows affected (0.10 sec)

如果有一个用户同时需要具备开发用户和运维用户的密码限制条件,可以把两个全局参数一起修改即可:历史密码保留天数为7天、同时历史密码保留个数为3次。

mysql:(none)>set persist password_reuse_interval = 7;
Query OK, 0 rows affected (0.00 sec)

mysql:(none)>set persist password_history=3;
Query OK, 0 rows affected (0.00 sec)
第二, 管理员在创建用户或者更改用户属性时可以对单个用户定义密码验证策略

把全局参数重置为默认,也即关闭密码验证策略:

mysql:(none)>set persist password_reuse_interval = default;
Query OK, 0 rows affected (0.00 sec)

mysql:(none)>set persist password_history=default;
Query OK, 0 rows affected (0.00 sec)

管理员退出连接重新进入,创建两个用户 ytt_dev1 和 ytt_dba1 :

mysql:(none)>create user ytt_dev1 identified by 'root123';
Query OK, 0 rows affected (0.04 sec)

mysql:(none)>create user ytt_dba1 identified by 'root123';
Query OK, 0 rows affected (0.02 sec)

更改两个用户的密码历史保留策略:

mysql:(none)>alter user ytt_dev1 password history 3;
Query OK, 0 rows affected (0.01 sec)

mysql:(none)>alter user ytt_dba1 password reuse interval 7 day;
Query OK, 0 rows affected (0.02 sec)

检索 mysql.user 表,看看是否更改成功:

mysql:(none)>select user,password_reuse_history,password_reuse_time from mysql.user where password_reuse_history is not null or password_reuse_time is not null;
+----------+------------------------+---------------------+
| user     | password_reuse_history | password_reuse_time |
+----------+------------------------+---------------------+
| ytt_dba1 |                   NULL |                   7 |
| ytt_dev1 |                      3 |                NULL |
+----------+------------------------+---------------------+
2 rows in set (0.00 sec)

具体验证方法类似全局参数设置部分,此处省略。

总结:

MySQL 8.0 推出的历史密码验证策略是对用户密码安全机制的另外一个全新的改进,可以省去此类需求非数据侧的繁琐实现。

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 阅读详情

相关推荐

Windows 7系统MySQL安装全攻略:版本选择、实战配置与故障排除

数据库作为现代应用的核心数据存储与管理组件,其部署与配置是开发与运维的基础技能。MySQL作为最流行的开源关系型数据库之一,以其高性能、高可靠性和易用性被广泛应用于各类场景。理解其在不同操作系统环境下的部署原理,尤其是处理老旧系统或特定环境下的兼容性问题,对于保障业务连续性和学习迁移至关重要。本文将聚焦于在仍有一定存量的Windows 7操作系统上部署MySQL的完整流程,深入分析MySQL 5.5、5.7、8.0等主流版本与32位/64位系统的兼容性矩阵,并提供从MSI与ZIP安装包选择、Visual C

dengjuanshou7445的博客 419

mysql数据库密码安全参数_MySQL 参数解析 password_reuse_interval

MySQL 8.0 引入新的参数 password_reuse_interval,用来控制历史密码的 使用策略,增强密码安全性。password_reuse_interval 参数定义了一个阈值,来控制之前使用过的密码,在经过多少天之后,才能重复使用,该参数设置为0,表示禁用该策略。该参数与password_history功能很相似,不同的是password_history指定的是密码修改多少次之...

weixin_39652760的博客 534

基于STM32电压检测和电流检测

1.可测量直流电压0~36V,适用于低电压电子电路中。 2.可测量直流电0~5A范围内,目前采用的ACS712测量量程为5A,该模块有多个量程,可测量到20A 3.实时功率监测 4.电池电量监测(采用电压压降方式计算)

weixin_44453694的博客 6万+

MySQL高级篇-第03章_用户与权限管理

MySQL高级篇-第03章_用户与权限管理

UntifA的博客 950

机械臂开发必备:KDL库正逆解与动力学实战指南

在机器人算法领域,运动学与动力学计算是机械臂控制、仿真与轨迹规划的核心基础。正运动学描述关节空间到笛卡尔空间的映射,逆运动学则需要求解复杂的非线性方程,工程实现时常面临数值稳定性与调试效率的挑战。KDL(Kinematics and Dynamics Library)作为ROS生态中广泛使用的开源库,提供了统一的模型描述与高效求解器,将正逆解、雅可比矩阵及动力学参数计算封装为简洁接口,大幅降低开发门槛。无论是机械臂的笛卡尔空间轨迹跟踪,还是基于动力学模型的前馈控制,KDL都展现出强大的工程价值。本文从运动学

weixin_33860528的博客 2506

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)

有限时间滑模控制(FTSMC)和固定时间滑模控制(FixTSMC)是两种重要的控制策略,旨在实现系统状态的快速收敛。FTSMC通过设计滑模面和控制律,确保系统状态在有限时间内收敛到原点,但其收敛时间与初始状态相关。FixTSMC则进一步优化,使收敛时间与初始状态无关,适用于高动态环境,具有更强的鲁棒性和更平滑的控制信号。两种方法均通过李雅普诺夫函数证明其稳定性,并通过仿真验证其有效性。FixTSMC在工程应用中更为可靠,尤其适合安全关键系统。

Lyajpunov的博客 3224

MySQL8.0及以上忘记密码处理

mysql8.0忘记密码处理

m0_37942215的博客 265

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1262

MySQL - MySQL 8.0(二)基本操作:用户

文章目录 前言 创建用户 仅做了解 授予和撤销用户的访问权限 1. 授予权限 2. 检查授权 3. 撤销权限 题外话:修改`mysql.user`表 修改密码&身份验证插件类型 设置用户密码有效期 1. 创建一个具有过期密码的用户 2. 手动设置过期用户 3. 要求用户每隔90天更改一次密码 4. 设置永不过期密码 5. 用户密码重用策略设置(未完成) 锁定&解锁用户 为用户创建角色 1. 创建角色 2. 使用`GRANT`语句为角色分配权限 3. 创建新用户 4. 使用`GRANT`语句为用户分配角色..

写虫师的博客 9512

新时代多目标优化【数学建模】领域的极致探索——数学规划模型

数学规划模型是数学建模中用于描述和解决优化问题的一类模型。它通过构建目标函数和约束条件,将实际问题转化为数学形式,旨在寻找满足约束条件的最优解。数学规划模型广泛应用于各个领域,包括资源分配、生产计划、物流管理和金融投资等,通过线性规划、非线性规划、整数规划等方法,帮助决策者在复杂环境中做出最优选择。

小李很执着的博客 5884

基于STM32的浴室环境智能控制系统设计

摘要:本文设计了一款基于STM32F103的智能卫浴系统,通过多传感器协同检测浴室环境参数。系统采用DS18B20检测环境与卫浴温度,DHT11监测湿度,MQ-135检测空气质量,光敏电阻测量光照强度,D203S人体热释电模块检测人员存在。当检测到异常参数时,系统自动启动相应调节功能:温度异常时控制加热/制冷继电器,湿度过高时启动通风除湿,空气质量差时进行换气,光照不足且有人时自动开灯。系统支持按键、蓝牙APP和语音三种控制方式,可手动设置参数阈值、切换防雾模式、控制音乐播放等功能。实验结果表明,该系统能有

3254968421的博客 483

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

作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 今天我们来继续介绍 MySQL 8.0 的新密码策略, 分别为双密码策略和内置随机密码生成。 第一,双密码策略: .

ActionTech的博客 668

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1216

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

作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 引言 这里来介绍下MySQL 8.0 版本自带的新密码验证策略。 正文 我们非常熟悉这样的模式: 用户想更改自己密.

ActionTech的博客 604

七天征服AutoSAR/SomeIP_04理解SoAD_LdCom_SD模块

本文深入解析了AUTOSAR平台下SOME/IP协议栈的架构设计与模块交互逻辑。重点剖析了SD模块(服务发现)和LdCom模块(通信适配层)与SoAD(Socket适配层)之间的复杂关联关系。文章通过详细配置表格和代码示例,阐述了服务注册发现机制、PDU路由控制策略、数据收发流程等核心功能,并形象地将三模块关系类比为"三极管结构"。特别强调了SD模块通过RoutingGroup实现通信路径的动态开关控制,以及LdCom模块在协议栈中的透传转发作用,帮助开发者理解配置规则背后的底层原理,提

大叔带刺的博客 195

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 我们时常会遇到的场景: 用银行卡在 ATM 机取款、在 APP 上转账、网购付款等等环节,因密码连续输错一定的次数.

ActionTech的博客 1397

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

我们先看下文档的描述,翻译过来是:可以⽤这 2 个参数来控制历史密码可被重用的策略:一个是基于次数策略,一个是基于时间策略。爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。基于这个逻辑去理解还造成了另⼀层误解:新配置的密码全局属性对于历史已创建的⽤户不⽣效。这篇文章主要针对密码相关的几个参数的使用细节做一些验证和分析,给大家分享下实际使用的经验,首先我们看下 MySQL 8.0 版本的。

ActionTech的博客 292

jre9下载 jdk9

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

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

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

bisal的专栏 224

MySQL8.0版本新特性学习

目录 变更内容: 账户与安全 用户创建和授权 认证插件更新 密码管理 角色管理 优化器索引 隐藏索引(不可见索引) 降序索引 函数索引 通用表表达式 非递归CTE 递归CTE 递归限制 窗口函数(分析函数) InnoDB增强 集成数据字典 原子DDL操作 自增列持久化 死锁检查控制 锁定语句选项 其他改进功能 JSON增强 内联路径操作符 JSON...

qq_43287952的博客 1157

新特性解读 | MySQL 8.0.28 用户连接内存限制

作者:杨涛涛资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任...

杨建荣的学习笔记 1055

CentOS 7安装MySQL 8.0完整指南:从官方仓库配置到远程访问安全部署

数据库作为现代应用的核心组件,其安装与配置是系统管理员和开发者的基础技能。在Linux环境中,通过包管理器安装软件看似简单,但涉及数据库这类关键服务时,需要理解其底层原理与安全机制。MySQL作为最流行的开源关系型数据库,其安装过程涉及仓库配置、版本选择、安全初始化等多个技术环节,正确的部署方式直接影响后续的稳定运行与数据安全。特别是在CentOS 7这类企业级Linux发行版上,系统默认仓库与官方源的差异、MySQL 8.0引入的新身份验证插件caching_sha2_password,以及防火墙与远程访

weixin_33859231的博客 325

MySQL 安全性和账户管理功能增强

MySQL 8.0 系列在安全性和账户管理方面进行了全面升级,重点增强了身份认证、密码策略、权限控制和审计日志等功能。主要改进包括:默认采用更安全的caching_sha2_password认证插件;支持多因素认证(MFA)和FIDO生物识别;密码管理新增字符修改比例、密码历史、双密码等策略;权限表改为InnoDB实现原子性操作;新增角色管理和部分撤销权限功能;审计日志支持定期刷新和自定义存储库;数据脱敏组件化并支持多字节字符。

m0_37607945的博客 955

MySQL 8.0.32 安装配置全攻略:从零到精通的避坑指南

数据库是应用开发与数据存储的核心组件,其安装与配置是掌握数据库技术的第一步。MySQL作为最流行的开源关系型数据库管理系统,以其高性能、高可靠性和丰富的功能生态,成为网站后台、应用开发及学习实践的首选。其核心原理基于客户端-服务器架构,通过SQL语言进行数据操作与管理。在技术价值上,一个稳定且配置得当的MySQL实例是保障数据一致性、支持高并发访问和实现业务逻辑的基础。尤其在开发测试与中小型生产环境中,正确的安装配置能有效避免后续的性能瓶颈与安全隐患。本文聚焦于MySQL 8.0.32这一经典稳定版本,针对

weixin_34168880的博客 368

CentOS 7 上 MySQL 5.7 安装配置全指南:从零到生产环境部署

关系型数据库是数据持久化存储与管理的核心组件,其通过结构化查询语言(SQL)进行数据操作,并遵循ACID原则保证事务可靠性。在Linux服务器环境中,通过包管理器(如YUM)安装数据库软件是标准实践,它能自动处理依赖关系并遵循系统目录规范。对于企业级应用,数据库的稳定部署与安全配置具有重要技术价值,直接影响到应用的可用性与数据安全。在Web服务、企业后台系统等场景中,数据库作为后端存储基石,其安装后的初始化、访问控制及性能参数调优是关键步骤。本文聚焦于在CentOS 7操作系统上,使用官方YUM仓库部署广泛

weixin_33816946的博客 409

Fedora 22 手动搭建 LAMP:systemd 与模块化 Web 基础设施实践

LAMP(Linux + Apache + MySQL + PHP)是 Web 服务最经典的技术栈,其核心在于操作系统层、Web 服务器、数据库与脚本引擎的协同机制。理解 Apache 的 systemd 服务生命周期管理、MySQL 的 socket 通信与权限模型、PHP 的模块化加载(如 php-mysqlnd 驱动)及配置分层(/etc/php.d/),是掌握 Web 应用底层运行逻辑的关键。这些能力支撑着高可用部署、安全加固、性能调优与故障排查等工程实践,广泛应用于教育 SaaS、信创环境验证、遗

322
上一篇: 新特性解读 | MySQL 8.0 新密码策略(上)
下一篇: 新特性解读 | MySQL 8.0 新密码策略(下)
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值