新特性解读 | 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 阅读详情

作者:杨涛涛

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

本文来源:原创投稿

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


引言

这里来介绍下MySQL 8.0 版本自带的新密码验证策略。

正文

我们非常熟悉这样的模式: 用户想更改自己密码,需要提供原来密码或者追加手机验证码才可以, 这种模式在MySQL数据库里一直不存在。在MySQL 8.0 之前的版本,普通用户可以直接更改自己密码,不需要旧密码验证,也不需要知会管理员,比如用户ytt_admin 需要更改密码,在MySQL 5.7 下直接敲alter user 命令即可:

root@ytt-ubuntu:~# mysql -uytt_admin -proot1234 -P5734 -h ytt-ubuntu -e "alter user ytt_admin identified by 'root'"
mysql: [Warning] Using a password on the command line interface can be insecure.
这样的密码更改行为其实不是很安全,假设有下面的场景出现:
用户ytt_admin 登录到MySQL服务后,做了些日常操作,完成后忘记退出;此时刚好有一个别有用心的用户ytt_fake 进入ytt_admin的登录环境,直接敲命令alter user 即可更改用户ytt_admin的密码,并且退出当前登录环境,用户ytt_admin本尊再次登录MySQL,就会提示密码错误,不允许登录,此时用户ytt_admin大脑肯定是懵的。
为了防止这类不安全事件的发生,MySQL 8.0 发布了一系列密码验证策略。 这里介绍第一项:当前密码验证策略设置!
当前密码验证策略有两种方法来给到具体用户。
第一种,从管理员侧来设置单个用户的当前密码验证策略。

创建用户或者更改用户设置时使用子句: password require current(表示强制此用户满足当前密码验证策略) 。

mysql:(none)>create user ytt_admin identified by 'root123' password require current;
Query OK, 0 rows affected (0.11 sec)

之后以用户ytt_admin 登录MySQL并且更改密码,提示需要提供旧密码才行。

root@ytt-ubuntu:/home/ytt# mysql -h ytt-ubuntu -uytt_admin -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 33
Server version: 8.0.27 MySQL Community Server - GPL

mysql:(none)>alter user ytt_admin identified by 'root';
ERROR 3892 (HY000): Current password needs to be specified in the REPLACE clause in order to change it.

接下来,alter user 跟上子句replace 来让用户ytt_admin输入旧密码,成功更改新密码。

mysql:(none)>alter user ytt_admin identified by 'root' replace 'root123';
Query OK, 0 rows affected (0.00 sec)

如果有的场景下需要保持MySQL旧版本的密码更改行为,管理员侧可以用子句: password require current optional 关闭新特性。

-- (optional 关键词可用default 替代,参考全局密码验证参数设置)
mysql:(none)>alter user ytt_admin password require current optional;
Query OK, 0 rows affected (0.04 sec)

来再次验证下用户ytt_admin更改密码的行为:又变更为不安全的MySQL旧版本安全行为。

mysql:(none)>alter user ytt_admin identified by 'root';
Query OK, 0 rows affected (0.01 sec)
第二种,设置全局参数,来强制所有用户使用当前密码验证策略。

MySQL 8.0 新版本内置的参数password_require_current 定义一个全局密码策略,默认关闭。开启这个选项时,要求用户更改密码时必须提供旧密码。

开启全局参数:

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

创建另外一个新用户 ytt_usage:

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

以用户ytt_usage登录MySQL更改自己密码: 直接拒绝更改,需要提供旧密码。

root@ytt-ubuntu:~# mysql -uytt_usage -proot123 -h ytt-ubuntu
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 37
Server version: 8.0.27 MySQL Community Server - GPL

...

mysql:(none)>alter user ytt_usage identified by 'root';
ERROR 3892 (HY000): Current password needs to be specified in the REPLACE clause in order to change it.
mysql:(none)>

replace 子句提供旧密码再次成功更改新密码:

mysql:(none)>alter user ytt_usage identified by 'root' replace 'root123';
Query OK, 0 rows affected (0.02 sec)

这里有一个需要注意的点:虽然全局参数开启,但是alter user 命令优先级更高,可以直接覆盖全局参数设置。下面是全局参数开启的环境下,用alter user命令来关闭用户ytt_usage的当前密码验证策略。

mysql:(none)>alter user ytt_usage password require current optional;
Query OK, 0 rows affected (0.11 sec)

接下来用户ytt_usage 又恢复为MySQL旧版本的安全行为:

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

还有另外一个子句: password require current default ,具体行为由全局参数password_require_current 的设置决定,全局参数关闭,这个子句恢复MySQL旧版本安全行为;全局参数开启,这个子句使用MySQL 新版本安全行为。

mysql:(none)>alter user ytt_usage password require current default;
Query OK, 0 rows affected (0.09 sec)

总结:

本文介绍的当前密码验证策略,使得MySQL 朝着更加安全的方向努力。

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

相关推荐

Spring Boot在线考试系统毕设源码解析:从架构设计到部署避坑

在Web应用开发领域,Spring Boot以其自动配置和快速启动特性成为众多开发者的首选框架,而在线考试系统作为典型的业务管理系统,涵盖了用户认证、权限控制、数据建模、自动阅卷等核心技术点。从数据库表设计到三层架构分层,从基于拦截器的角色鉴权到随机组卷策略与计分规则,这类项目完整展现了Java企业级开发的工程实践路径。无论是毕业设计选型还是企业内部培训考核系统搭建,合理的版本选型(如Spring Boot 2.7.x)+ MyBatis Plus + MySQL的技术组合能有效降低开发成本。本文基于一套完

weixin_33178839的博客 324

mysql case默认_MySQL设置密码复杂度

MySQL5.6.6版本之后增加了密码复杂度验证插件validate_password,相关参数设置的较为严格。使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。1、密码验证插件安装要使MySQL服务器可以使用,插件库文件必须位于MySQL插件目录(plugin_dir系统变量指定的目录)中。默认在MySQL安装目录下$MYSQL_HOME/lib/plugin...

weixin_39617252的博客 309

从原理到应用:深入解析双编码器在机器人关节力矩感知中的实现

本文深入解析了双编码器方案在机器人关节力矩感知中的实现原理与应用。该方案通过在电机侧和输出侧分别安装编码器,利用两者位置差异间接高精度计算外力,克服了传统电流环精度不足和扭矩传感器成本高昂的缺点。它为实现协作机器人的丝滑拖动示教、灵敏碰撞检测以及足式机器人的动态平衡与柔顺控制提供了关键技术支撑,是目前高性能机器人力控的主流选择。

t8u9v0w1x的博客 662

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

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 369

从零开始之stm32之CAN通信

CAN通信极简教程(小白友好版),从小白的视角了解并实现简单的STM32F103的CAN通信,直接上手。

qq_30993593的博客 1306

【得物技术】MySQL 8.0:新的身份验证插件(caching_sha2_password)

从 MySQL 8.0.4 开始,默认身份验证插件从 mysql_native_password 更改为 caching_sha2_password。相应地,现在的 libmysqlclient 将使用 caching_sha2_password 作为默认的验证机制。 为什么这样做呢? MySQL 5.6/5.7 的默认密码插件一直以来都是 mysql_native_password。其优点是它支持 challenge-response 机制,这是非常快的验证机制,无需在网络中发送实际密码,并且

SmartCodeTech的博客 5345

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

MediaPipeUnityPlugin(最新版)摇摆拳人脸识别

不忘初心 方得始终 2981

牛年伊始,你的mysql密码安全吗?

前言: 新年伊始,你的数据库是不是该巡检了?一般巡检都会关心密码安全问题,比如密码复杂度设置,是否有定期修改等。特别是进行等保评测时,评测机构会要求具备密码安全策略。其实 MySQL 系统本身可以设置密码复杂度及自动过期策略的,可能比较少用,大多数同学并未详细去了解。本篇文章我们一起来学习下如何设置数据库账号密码复杂度及自动过期策略。 1.密码复杂度策略设置 MySQL 系统自带有 validate_password 插件,此插件可以验证密码强度,未达到规定强度的密码则不允许被设置。My...

Hsuesh的博客 502

基于STM32智能震动报警器震动检测声光报警系统设计

*单片机设计介绍,基于STM32智能震动报警器震动检测声光报警系统设计。

2201_75940997的博客 2149

华为网络实战:5分钟搞定OSPF+VRRP+MSTP多协议联动配置(附完整命令集)

本文深入解析了在企业网络中如何高效协同部署OSPF、VRRP和MSTP三大协议。通过一个典型的双核心网络案例,详细阐述了从规划、配置到验证的完整流程,重点强调了确保MSTP根桥与VRRP主设备一致的设计原则,以实现最优的二层与三层流量转发路径,并提供了完整的命令集和故障排查思路。

weixin_29251337的博客 153

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

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

ActionTech的博客 1397

【100%通过率】华为OD机试真题 JavaScript 实现【对称美学】【2023 Q1 | 100分】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 9850

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

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

ActionTech的博客 3055

CoppeliaSim和Python进行无人机联合仿真

CopeeliaSim和Python进行无人机轨迹跟踪联合仿真。首先建立起CoppeliaSim和Python的连接,其次在Python中生成轨迹,CoppeliaSim仿真环境中的无人机进行跟踪,并绘制出轨迹曲线,有每一步详细的教学。

加斯顿工程师的博客 987

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

ActionTech的博客 668

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

ActionTech的博客 292

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

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 索引长度限制的案例
下一篇: 新特性解读 | MySQL 8.0 新密码策略(中)
爱可生开源社区
博客等级 码龄8年 1936粉丝 1004原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值