如何在MySQL中检查密码强度
密码是广泛被大量应用和服务采用的最基本的认证形式。因此,确保用户使用的密码强大且安全是一个至关重要的特性。
因此,一个要求是在哈希和将密码存储在数据库之前测试密码的强度。这是因为MySQL以单向哈希的方式存储密码,即一旦密码被哈希,就无法逆转。
幸运的是,MySQL 为我们提供了一种插件,允许我们在对密码进行哈希之前检查密码强度。尽管该插件适用于小型和测试用例,但在大型应用程序中并不是非常适用。在将密码发送到数据库之前,最好在客户端进行密码检查。
加入我们,一起探索在MySQL中设置和配置简单密码强度检查的过程。
MySQL 验证密码插件
正如您所猜测的,validate_password 插件在 MySQL 中实现了密码强度检查。该插件支持 MySQL 版本 5.7。
在使用之前,确保插件已安装并激活是一个好措施。
启用 MySQL 验证插件
要启用 validate_password 插件,请编辑 MySQL 配置文件,并在 [mysqld] 部分下添加如下条目。
[mysqld]
plugin-load-add=validate_password.so保存配置并重新加载服务器。
您还可以通过使用INSTALL命令在运行时包含插件。
INSTALL PLUGIN validate_password SONAME 'validate_password.so';注意:在Windows中,将validate_password.so文件替换为validate_password.dll。
启用验证密码组件
在 MySQL 8.0 及更高版本中,validate_plugin 已被弃用,需要使用 validate_password 组件代替。
运行命令:
INSTALL COMPONENT 'file://component_validate_password';命令输出:
MySQL 密码强度评分
下表显示了 MySQL 中密码长度和分配的强度。
| 长度 | 力量 |
| < 4 | |
| >= 4 且 < 验证密码长度 | 25 |
| 符合密码政策1 | 50 |
| 符合密码政策 2 | 75 |
| 符合密码政策 3 | 100 |
注意:您可以通过以下语句查看 validate_password_length 变量的值:
show variables like 'validate_password_length';输出:
|Variable_name |Value|
|------------------------|-----|
|validate_password.length|8 |
|validate_password_length|8 |MySQL 检查密码强度
在MySQL中检查密码字符串,请使用VALIDATE_PASSWORD_STRENGTH()函数。该函数以密码(字符串)作为参数,返回基于MySQL密码等级的强度。
语句的语法如下面所示:
SELECT VALIDATE_PASSWORD_STRENGTH(‘str’);例如:
select validate_password_strength('insto');
select validate_password_strength('IvEYDrat');
select validate_password_strength('lvnDYPW%xP28E5%vt*AOROkg');上面的语句使用 validate_password_strength 函数来检查三种密码类型的强度。
结果:
|validate_password_strength('insto')|
|-----------------------------------|
|25 |第二:
|validate_password_strength('IvEYDrat')|
|--------------------------------------|
|50 |
第三:
|validate_password_strength('lvnDYPW%xP28E5%vt*AOROkg')|
|------------------------------------------------------|
|100 |终止
在本文中,您将学习如何使用MySQL validate_password插件来检查给定密码是否符合设置的密码强度。
感谢阅读!


