首页 > 数据库 > MySQL > 正文

使用MySQL密码插件杜绝账户弱口令

2024-07-24 12:59:28
字体:
来源:转载
供稿:网友
从MySQL 5.6.6版本起,提供了密码插件(validate_passWord )用于检查密码强度提高安全性。在数据库中安装并启用密码插件后,在create user、alter user(5.7版本)、grant、set password操作时会验证密码是否符合预设的密码策略。密码插件提供三种级别的验证标准,由参数validate_password_policy控制:1。 LOW:只验证密码长度,不得少于8位2。 MEDIUM :除验证长度外,还需满足至少包含1个数字、1个小写字母、1个大写字母和一个特殊符号3。 STRONG:除以上所有规则外,新设密码不能包含密码文件中的字词一、使用密码插件在5.6、5.7、8.0版本中加载密码插件的方法都一样。1。确保密码插件的so文件在插件目录中,通常为MySQL安装目录下的lib/plugin下。2。 加载密码插件
方法一:写入配置文件,重启MySQL实例[mysqld]plugin-load=validate_password.so
方法二:在实例运行中使用install plugin命令加载插件INSTALL PLUGIN validate_password SONAME 'validate_password.so';二、验证插件加载情况
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS    -> WHERE PLUGIN_NAME LIKE 'validate%';+-------------------+--------------------+| PLUGIN_NAME       | PLUGIN_STATUS      |+-------------------+--------------------+| validate_password | ACTIVE             |+-------------------+--------------------+1 row in set (0.00 sec)三、查看默认密码策略默认的密码强度级别是中等(MEDIUM),即密码不能少于8位,且要包含数字、大小写字母、特殊符号至少各一个:
mysql> show variables like '%validate_password%';+--------------------------------------+--------+| Variable_name                        | Value  |+--------------------------------------+--------+| validate_password_check_user_name    | OFF    |             #设为 ON 时密码中不允许包含用户名| validate_password_dictionary_file    |        |             #用于密码验证的字典文件路径,仅在密码验证级别为STRONG时生效| validate_password_length             | 8      |             #限制密码最短长度不得少于8位| validate_password_mixed_case_count   | 1      |             #密码中大小写字母的最少个数| validate_password_number_count       | 1      |             #密码中数字的最少个数| validate_password_policy             | MEDIUM |             #设置密码验证级别| validate_password_special_char_count | 1      |             #密码中特殊符号的最少个数+--------------------------------------+--------+四、测试密码插件的效果在新设置不符合密码策略规则的密码时会报错,提示不满足密码策略要求:
mysql> create user hy@'192.168.1.%' identified by 'xxxxxx123';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements设置符合策略的复杂密码后可以成功执行:
mysql> create user hy@'192.168.1.%' identified by '1qaz@WSX';Query OK, 0 rows affected (0.00 sec)mysql> select user,host,authentication_string from mysql.user;+-----------+-------------+-----------------------------------------------------------+| user      | host        | authentication_string                                     |+-----------+-------------+-----------------------------------------------------------+| root      | localhost   | *6AF239DABA5FB2A794AFA158646426FC1E9A5742                 || mysql.sys | localhost   | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE                 || hy        | 192.168.1.% | *58319282EAB9E38D49CA25844B73DA62C80C2ABC                 |+-----------+-------------+-----------------------------------------------------------+
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表