我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 8.0.34 在密码管理上的改进

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 8.0.34 在密码管理上的改进

本文作者详细说明了 MySQL 8.0.34 版本在密码管理上的改进。

作者:Sri Sakthivel

本文来源:Percona 官网博客

  • 爱可生开源社区出品。

MySQL 8.0.34为我们带来了新的密码验证参数 validate_password.changed_characters_percentage。使用此功能,我们可以控制在 validate_password 接受用户帐户的新密码之前用户必须更改的密码中的最小字符数。本文中,提供了一些场景,展示了参数 validate_password.changed_characters_percentage 如何影响用户密码更改。

要求

为了实现这一点,我们应该启用“密码验证策略”(在 MySQL 8.0.13 中引入)。我们可以通过使用参数 password_require_current 或在创建或更改用户时指定 PASSWORD REQUIRE CURRENT 来全局允许它。Brain Sumpter 在他的文章 MySQL 8:密码验证策略 中已经很好地解释了这个主题。我建议您阅读它以了解有关“密码验证策略”的更多信息。就我而言,我只是启用了参数 password_require_current 来全局强制执行“密码验证策略”。

percona labs MySQL 8.0.34 > set persist password_require_current = 1;Query OK, 0 rows affected (0.05 sec)percona labs MySQL 8.0.34 > select @@password_require_current;+-----------------------------------+| @@password_require_current |+-----------------------------------+|                          1 |+-----------------------------------+1 row in set (0.00 sec)

一旦我们启用 password_require_corrent 选项,我们应该在 REPLACE 子句中提供旧密码。否则,它将不允许更改密码。将收到以下错误:

percona labs MySQL 8.0.34 > alter user 'test'@'localhost' identified by 'Test@321';ERROR 3892 (HY000): Current password needs to be specified in the REPLACE clause in order to change it.

注意:对系统数据库 mysql 库具有全局 CREATE USERUPDATE 权限的用户仍然可以更改密码,而无需指定当前密码。

创建测试环境

在测试服务器中安装了 MySQL 8.0.34 版本,并安装了 validate_password 组件。

percona labs MySQL 8.0.34 > select @@version, @@version_comment;+-------------+--------------------------------------+| @@version | @@version_comment            |+-------------+--------------------------------------+| 8.0.34    | MySQL Community Server - GPL |+-------------+--------------------------------------+1 row in set (0.00 sec)percona labs MySQL 8.0.34 > INSTALL COMPONENT 'file://component_validate_password';Query OK, 0 rows affected (0.00 sec)percona labs MySQL 8.0.34 > select @@validate_password.changed_characters_percentage;+----------------------------------------------------------------+| @@validate_password.changed_characters_percentage |+----------------------------------------------------------------+|                     0 |+----------------------------------------------------------------+1 row in set (0.00 sec)

我建议安装 validate_password 组件 而不是 validate_password 插件(已弃用)。将其安装为插件时您可能看不到此功能。

测试

已将 changed_characters_percentage 值设置为 50。这意味着每当用户尝试重置密码时,新密码不应包含任何旧字符的 50%。

percona labs MySQL 8.0.34 > set global validate_password.changed_characters_percentage=50;Query OK, 0 rows affected (0.00 sec)percona labs MySQL 8.0.34 > select @@validate_password.changed_characters_percentage;+----------------------------------------------------------------+| @@validate_password.changed_characters_percentage |+----------------------------------------------------------------+|                    50 |+----------------------------------------------------------------+1 row in set (0.00 sec)

然后,我创建了用户 percona1,密码为 Percona@321

percona labs MySQL 8.0.34 > create user 'percona1'@'localhost' identified by 'Percona@321';Query OK, 0 rows affected (0.00 sec)percona labs MySQL 8.0.34 > grant select on *.* to 'percona1'@'localhost';Query OK, 0 rows affected (0.00 sec)percona labs MySQL 8.0.34 > flush privileges;Query OK, 0 rows affected (0.01 sec)

现在,让我们尝试将密码更改为 Percona@567

percona labs MySQL 8.0.34 > select user();+--------------------+| user()             |+--------------------+| percona1@localhost |+--------------------+1 row in set (0.00 sec)percona labs MySQL 8.0.34 > alter user percona1@localhost identified by 'Percona@567' replace 'Percona@321';ERROR 4165 (HY000): The new password must have at least '5' characters that are different from the old password. It has only '3' character(s) different. For this comparison, uppercase letters and lowercase letters are considered to be equal.

它不允许我将密码从 Percona@321 更改为 Percona@567,并且该错误非常清楚地解释了情况。我的密码有 11 个字符,而我的新密码只有三个字符差异(Percona@321Percona@567 )。根据我的 changed_characters_percentage 值,新密码应包含 50% 的新字符。这意味着我的新密码应至少包含五个不同的字符。因此,新密码不符合要求。

现在,让我们尝试使用另一个新密码 Percona %#567。它与之前的密码有五个不同的字符。

percona labs MySQL 8.0.34 > alter user percona1@localhost identified by 'Percona%#567' replace 'Percona@321';Query OK, 0 rows affected (0.01 sec)

只要满足要求就可以正常工作!

它如何处理大小写字母?

为了解释这种情况,我创建了另一个用户 percona2,密码为 PERCONa@321

percona labs MySQL 8.0.34 > create user 'percona2'@'localhost' identified by 'PERCONa@321';Query OK, 0 rows affected (0.00 sec)

密码有 11 个字符。因此,我们必须在新密码中至少更改五个字符。我会将密码从 PERCONa@321 更新为 perconA@321。在本例中,我将更改大小写和小写的七个字符。

percona labs MySQL 8.0.34 > alter user percona2@localhost identified by 'perconA@321' replace 'PERCONa@321';ERROR 4165 (HY000): The new password must have at least '5' characters that are different from the old password. It has only '0' character(s) different. For this comparison, uppercase letters and lowercase letters are considered to be equal.

不工作。它无法更改,因为大写字母和小写字母被视为相同。

如何处理不同的字符数?

为了测试这个场景,我创建了一个用户 percona3,密码为 Percona@321。我们可以测试以下场景。

  • 更多现有角色
  • 更多不存在的角色

更多现有角色

为了测试这一点,我将密码从 Percona@321 更改为 Percona@3213333333。(只需在现有密码中添加七个“3”字符即可)。

percona labs MySQL 8.0.34 > select user();+--------------------+| user()             |+--------------------+| percona3@localhost |+--------------------+1 row in set (0.00 sec)percona labs MySQL 8.0.34 > alter user percona3@localhost identified by 'Percona@3213333333' replace 'Percona@321';ERROR 4165 (HY000): The new password must have at least '5' characters that are different from the old password. It has only '0' character(s) different. For this comparison, uppercase letters and lowercase letters are considered to be equal.

该错误报告“0”个字符差异,因为我们在密码中添加了七个新字符。但是,字符(3)已经存在于密码 Percona@3213333333 中。在这种情况下,这是不可接受的。

更多不存在的角色

为了测试这一点,我现在将密码从 Percona@321 更改为 Percona@3214455667788 。因此,在本例中,我将向现有密码添加十个新字符。但是,我有五个不存在的字符(4,5,6,7,8)。

percona labs MySQL 8.0.34 > alter user percona3@localhost identified by 'Percona@3214455667788' replace 'Percona@321';Query OK, 0 rows affected (0.01 sec)

有用!

所以,从上面两个例子来看,密码长度可能会有所不同。但是,它应该满足更改字符的百分比。

结论

MySQL 8 有很多安全改进和新的实现,我想说这个功能非常好,可以改进密码验证并在更改用户密码时增加更多安全性。

原文链接:https://www.percona.com/blog/mysql-8-0-34-improved-password-management-by-defining-the-change-characters-count/

更多技术文章,请访问: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

来源地址:https://blog.csdn.net/ActionTech/article/details/132277966

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 8.0.34 在密码管理上的改进

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

mysql数据库的超级管理员密码怎么修改

这篇文章主要介绍“mysql数据库的超级管理员密码怎么修改”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql数据库的超级管理员密码怎么修改”文章能帮助大家解决问题。
2023-01-31

Linux如何进入单用户模式修改管理员密码

小编今天带大家了解Linux如何进入单用户模式修改管理员密码,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“Linux如何进入单用户模
2023-06-28

怎么在GitLab上进行第一次登录并更改密码

这篇文章主要讲解了“怎么在GitLab上进行第一次登录并更改密码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么在GitLab上进行第一次登录并更改密码”吧!第一步:访问GitLab网站首
2023-07-05

discuz 修改创始人密码、管理员登录密码的方法

1、discuz 管理员http://www.cppcns.com登录密码的修改方法从前台登录后 > 进入 管理中编程客栈心(输入密码) > 用户 > 搜索你要修改的用户 然后定位到详情,打开就可以了然后定位到密码2、修改创始人密码通过论坛
2022-06-12

怎么在Linux下修改Mysql的用户root密码

本篇内容介绍了“怎么在Linux下修改Mysql的用户root密码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下面给大家分享下在Linux
2023-06-09

在Linux下如何修改Mysql的用户(root)的密码

下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来的mysql的root的密码。 修改的用户都以root为列。 一、拥有原来的mysql的ro
2022-06-04

使用phpmyadmin如何修改帝国CMS的管理员密码

1、若是5.0及以前版本:通过帝国的mysql数据库表格来看,管理员帐号存放在phome_enewsuser表里,打开以后,把password字段的值设编程客栈为:21232f297a57a5a743894a0e4a801fc3,这样密码就
2022-06-12

编程热搜

目录