MySQL 8.0 引入了增强的密码管理功能,允许管理员通过验证插件来实施更严格的密码策略。这些策略可以帮助确保用户密码的安全性,防止弱密码和常见的密码攻击。
默认验证插件
MySQL 8.0 默认使用 caching_sha2_password 插件进行身份验证,但也可以配置为使用 mysql_native_password 或其他自定义插件。为了实现密码策略,通常会使用 validate_password 插件。
配置 validate_password 插件
-
启用
validate_password插件:
如果你还没有启用validate_password插件,可以通过以下步骤启用它:INSTALL PLUGIN validate_password SONAME 'validate_password.so';确保
validate_password.so文件存在于 MySQL 的插件目录中(通常是plugin_dir变量指定的目录)。 -
设置全局参数:
在 MySQL 配置文件(如my.cnf或my.ini)中添加或修改以下参数以启用和配置密码策略:[mysqld] validate_password.policy=STRONG validate_password.length=8 validate_password.mixed_case_count=1 validate_password.number_count=1 validate_password.special_char_count=1 validate_password.dictionary_file=/path/to/dictionary/filevalidate_password.policy:可以设置为LOW,MEDIUM, 或STRONG。默认是MEDIUM。LOW:密码长度至少为 8 个字符。MEDIUM:密码长度至少为 8 个字符,并且必须包含数字、小写字母、大写字母和特殊字符中的至少三种。STRONG:与MEDIUM相同,但还要求密码不包含字典文件中的常见单词。
validate_password.length:设置密码的最小长度。validate_password.mixed_case_count:设置密码中必须包含的大写和小写字母的数量。validate_password.number_count:设置密码中必须包含的数字数量。validate_password.special_char_count:设置密码中必须包含的特殊字符数量。validate_password.dictionary_file:指定一个字典文件路径,用于检查密码是否包含常见的单词。
-
重启 MySQL 服务:
修改配置文件后,重启 MySQL 服务以使更改生效:sudo systemctl restart mysql
查看当前密码策略
你可以通过以下 SQL 命令查看当前的密码策略设置:
SHOW VARIABLES LIKE 'validate_password%';
测试密码强度
你可以使用 validate_password 插件提供的函数来测试密码的强度:
SELECT validate_password_strength('your_password_here');
该函数将返回一个介于 0 和 100 之间的整数,表示密码的强度。
示例配置
假设你想设置一个强密码策略,要求密码长度至少为 12 个字符,包含大写和小写字母、数字和特殊字符,并且不包含字典文件中的常见单词,可以在 my.cnf 中添加以下配置:
[mysqld]
validate_password.policy=STRONG
validate_password.length=12
validate_password.mixed_case_count=1
validate_password.number_count=1
validate_password.special_char_count=1
validate_password.dictionary_file=/usr/share/dict/words
3739

被折叠的 条评论
为什么被折叠?



