MySQL 8.0.34给我们带来了新密码验证参数。使用这个,我们可以控制的最小字符数密码之前,用户必须改变validate_password接受一个新的用户帐户密码。
在这个博客中,我提供一些场景显示参数validate_password.changed_characters_percentage影响用户密码更改。
要求
做这项工作,我们应该使“密码Verification-Required政策”(MySQL 8.0.13介绍)。我们可以让它在全球范围内通过使用参数“password_require_current”或通过指定“密码需要当前”在创建或修改用户。这个话题已经解释很好大脑先驱在他的文章中,MySQL 8:密码验证政策。我建议你读它来了解更多关于“密码Verification-Required政策。“就我而言,我只是启用参数“password_require_current”执行“密码Verification-Required全球政策”。
|
1
2
3
4
5
6
7
8
9
10
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
集
坚持
password_require_current
=
1
;
查询
好吧
,
0
行
影响
(
0.05
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
@
@
password_require_current
;
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
@
@
password_require_current
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
1
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
1
行
在
集
(
0.00
证券交易委员会
)
|
一旦我们启用“password_require_corrent”选项,我们应该提供旧密码重置条款。否则,它将不允许您更改密码。你会得到以下错误:
|
1
2
|
错误
3892年
(
HY000
)
:
当前的
密码
需要
来
是
指定的
在
的
取代
条款
在
订单
来
改变
它
。
|
注意:用户与全球“mysql”系统上创建用户和更新权限数据库仍然可以改变密码不指定当前密码。
创建一个测试环境
我已经安装了MySQL 8.0.34版本测试服务器和安装了“validate_password”组件。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
@
@
版本
,
@
@
version_comment
;
+
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
@
@
版本
|
@
@
版本
_评论
|
+
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
8.0.34
|
MySQL
社区
服务器
- - - - - -
GPL
|
+
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
1
行
在
集
(
0.00
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
安装
组件
“文件:/ / component_validate_password”
;
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
@
@
validate_password
。
changed_characters_percentage
;
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
|
@
@
validate_password
。
changed_characters_percentage
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
|
0
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
1
行
在
集
(
0.00
证券交易委员会
)
|
我建议安装组件“validate_password”而不是“validate_password”插件(弃用)。你可能不会看到这一特性在安装插件。
测试“changed_characters_percentage”
我有设置changed_characters_percentage值为50。这意味着当用户试图重置密码,新密码不应该包含任何旧的字符的50%。
|
1
2
3
4
5
6
7
8
9
10
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
集
全球
validate_password
。
changed_characters_percentage
=
50
;
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
@
@
validate_password
。
changed_characters_percentage
;
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
|
@
@
validate_password
。
changed_characters_percentage
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
|
50
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - - - - -
+
1
行
在
集
(
0.00
证券交易委员会
)
|
然后,我创建了用户与密码“percona1雷竞技下载官网(电子邮件保护)”。
|
1
2
3
4
5
6
7
8
|
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
格兰特
选择
在*
。
*
来
“雷竞技下载官网percona1”
@
“localhost”
;
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
雷竞技下载官网
实验室
MySQL
8.0.34
>
冲洗
特权
;
查询
好吧
,
0
行
影响
(
0.01
证券交易委员会
)
|
现在,让我们尝试更改密码”(电子邮件保护)”。
|
1
2
3
4
5
6
7
8
9
10
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
用户
(
)
;
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
用户
(
)
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
雷竞技下载官网percona1
@
本地主机
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
1
行
在
集
(
0.00
证券交易委员会
)
错误
4165年
(
HY000
)
:
的
新
密码
必须
有
在
至少
“5”
字符
那
是
不同的
从
的
老
密码
。
它
有
只有
“3”
字符
(
年代
)
不同的
。
为
这
比较
,
大写字母
信
和
小写字母
信
是
被认为是
来
是
平等的
。
|
不允许我更改密码从“(电子邮件保护)”到“(电子邮件保护)”和错误解释了情况很明显。我有11位的密码和新密码只有三个性格差异((电子邮件保护)321年来(电子邮件保护)567年)。按我的“changed_characters_percentage”价值,新密码应包含50%的新角色。这意味着我的新密码应至少有五个不同的字符。所以,新密码不符合要求。
现在,让我们试着用另一个新密码,”Percona雷竞技下载官网% # 567”。它有五个字符不同于以前的密码。
|
1
2
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
改变
用户
雷竞技下载官网percona1
@
本地主机
确认
通过
“雷竞技下载官网Percona % # 567”
取代
”(电子邮件保护)”
;
查询
好吧
,
0
行
影响
(
0.01
证券交易委员会
)
|
它是满足要求!
它是如何工作的和上/小写字母吗?
为了解释这种情况,我已经创建了另一个用户,“percona2”密码”雷竞技下载官网(电子邮件保护)”。
|
1
2
|
查询
好吧
,
0
行
影响
(
0.00
证券交易委员会
)
|
有11个字符的密码。所以我们要做至少5个字符修改新密码。我将更新的密码”雷竞技下载官网@321”到“雷竞技下载官网@321”。在本例中,我将从下层和右下方的情况下改变7个字符。
不工作。它不能改变,因为大写和小写字母被认为是相等的。
使用不同的字符计数它是如何工作的?
为了测试这个场景中,我已经创建了一个用户与密码“percona3””雷竞技下载官网(电子邮件保护)”。我们可以测试下面的场景。
- 更多的现有的字符
- 更不存在的人物
更多的现有的字符
为了验证这一点,我将更改密码”(电子邮件保护)”到“(电子邮件保护)”。(添加现有的七个“3”字符密码)。
|
1
2
3
4
5
6
7
8
9
10
|
雷竞技下载官网
实验室
MySQL
8.0.34
>
选择
用户
(
)
;
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
用户
(
)
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
|
雷竞技下载官网percona3
@
本地主机
|
+
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
- - -
+
1
行
在
集
(
0.00
证券交易委员会
)
错误
4165年
(
HY000
)
:
的
新
密码
必须
有
在
至少
“5”
字符
那
是
不同的
从
的
老
密码
。
它
有
只有
' 0 '
字符
(
年代
)
不同的
。
为
这
比较
,
大写字母
信
和
小写字母
信
是
被认为是
来
是
平等的
。
|
错误报告“0”字符不同,因为我们增加了七个新字符的密码。但是,这个角色(3)密码”中已经存在(电子邮件保护)3213333333”。在本例中,它是不可接受的。
更不存在的人物
为了验证这一点,我现在更改密码”(电子邮件保护)”到“(电子邮件保护)”。因此,在这种情况下,我将十个新角色添加到现有的密码。但是,我有五个不存在的字符(4、5、6、7、8)。
它的工作原理!
所以,从上面的两个例子,密码长度可能有所不同。但是,它应该满足的百分比变化的角色。
结论
MySQL 8有很多安全改进和新的实现,我会说这个功能是很好的改善和增加更多的安全密码验证时,更改用户的密码。
雷竞技下载官网Percona MySQL是最完整,分布稳定、可伸缩的、安全的MySQL开源解决方案,提供企业级的数据库环境最关键业务应用程序…和它的免费使用!





