MySQL如何启用密码强度审计【转】

1.密码验证插件安装

要使服务器可以使用,插件库文件必须位于MySQL插件目录(plugin_dir系统变量指定的目录)中。如有必要,请设置plugin_dir服务器启动时的值, 以告知服务器插件目录位置。

插件库文件基本名称是 validate_password。文件名后缀因平台.so而异(例如,对于Unix和类Unix系统,.dll对于Windows)。

要在服务器启动时加载插件,请使用该 --plugin-load-add选项命名包含它的库文件。使用此插件加载方法,每次服务器启动时都必须提供该选项。例如,将这些行放在服务器my.cnf文件中(.so根据需要调整平台的 后缀):

[mysqld]
plugin-load-add=validate_password.so


修改后my.cnf,重新启动服务器以使新设置生效。

或者,要在运行时注册插件,请使用此语句(.so根据需要调整后缀):

INSTALL PLUGIN validate_password SONAME 'validate_password.so';

INSTALL PLUGIN加载插件,并将其注册到mysql.plugins 系统表中,以便为每个后续的正常服务器启动加载插件。

要验证插件安装,请检查 INFORMATION_SCHEMA.PLUGINS表或使用该SHOW PLUGINS语句

    mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
           FROM INFORMATION_SCHEMA.PLUGINS
           WHERE PLUGIN_NAME LIKE 'validate%';
    +-------------------+---------------+
    | PLUGIN_NAME       | PLUGIN_STATUS |
    +-------------------+---------------+
    | validate_password | ACTIVE        |
    +-------------------+---------------+


如果插件无法初始化,请检查服务器错误日志以获取诊断消息。

如果插件先前已注册 INSTALL PLUGIN或已加载 --plugin-load-add,您可以使用--validate-password服务器启动时的选项来控制插件激活。例如,要在启动时加载插件并防止在运行时删除它,请使用以下选项:

[mysqld]
plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT


1) 先查看mysql全局参数配置

该问题其实与mysql的validate_password_policy的值有关。

查看一下msyql密码相关的几个全局参数:

    mysql> select @@validate_password_policy;
     
    +----------------------------+
     
    | @@validate_password_policy |
     
    +----------------------------+
     
    | MEDIUM |
     
    +----------------------------+
     
    1 row in set (0.00 sec)
     
     
    mysql> SHOW VARIABLES LIKE 'validate_password%';
     
    +--------------------------------------+--------+
     
    | Variable_name | Value |
     
    +--------------------------------------+--------+
     
    | validate_password_dictionary_file | |
     
    | validate_password_length | 8 |
     
    | validate_password_mixed_case_count | 1 |
     
    | validate_password_number_count | 1 |
     
    | validate_password_policy | MEDIUM |
     
    | validate_password_special_char_count | 1 |
     
    +--------------------------------------+--------+
     
    6 rows in set (0.08 sec)



2)参数解释

    validate_password_dictionary_file
     
    插件用于验证密码强度的字典文件路径。
     
     
    validate_password_length
     
    密码最小长度,参数默认为8,它有最小值的限制,最小值为:validate_password_number_count + validate_password_special_char_count + (2 * validate_password_mixed_case_count)
     
     
    validate_password_mixed_case_count
     
    密码至少要包含的小写字母个数和大写字母个数。
     
     
    validate_password_number_count
     
    密码至少要包含的数字个数。
     
     
    validate_password_policy
     
    密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。有以下取值:
     
    Policy Tests Performed
     
    0 or LOW Length
     
    1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
     
    2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
     
    默认是1,即MEDIUM,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符。
     
     
    validate_password_special_char_count
     
    密码至少要包含的特殊字符数。



3)修改mysql参数配置
改变密码策略,修改简单密码

    mysql> set global validate_password_policy=0;
     
    Query OK, 0 rows affected (0.05 sec)
    mysql> set global validate_password_mixed_case_count=0;
     
    Query OK, 0 rows affected (0.00 sec)
    mysql> set global validate_password_number_count=0;
     
    Query OK, 0 rows affected (0.00 sec)
    mysql> set global validate_password_special_char_count=0;
     
    Query OK, 0 rows affected (0.00 sec)
    mysql> set global validate_password_length=4;
     
    Query OK, 0 rows affected (0.00 sec)
    mysql> SHOW VARIABLES LIKE 'validate_password%';
     
    +--------------------------------------+-------+
     
    | Variable_name | Value |
     
    +--------------------------------------+-------+
     
    | validate_password_dictionary_file | |
     
    | validate_password_length | 4 |
     
    | validate_password_mixed_case_count | 0 |
     
    | validate_password_number_count | 0 |
     
    | validate_password_policy | LOW |
     
    | validate_password_special_char_count | 0 |
     
    +--------------------------------------+-------+
     
    6 rows in set (0.00 sec)


4)修改简单密码:

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');
     
    Query OK, 0 rows affected, 1 warning (0.00 sec)
扫描二维码关注公众号,回复: 4580383 查看本文章

转自

---------------------
作者:背锅浩
来源:CSDN
原文:https://blog.csdn.net/weixin_39845407/article/details/81736882
版权声明:本文为博主原创文章,转载请附上博文链接!

以下转自

MySQL如何启用密码强度审计_ITPUB博客 http://blog.itpub.net/15498/viewspace-2135382/

执行以下命令安装密码强度审计插件:

mysql>INSTALL PLUGIN validate_password SONAME 'validate_password.so';

设置最强密码策略:
mysql> set global validate_password_policy=strong;
Query OK, 0 rows affected (0.00 sec)

或者通过配置文件my.cnf添加部分密码强度相关参数:

[mysqld]

plugin-load=validate_password.so
validate_password_policy=2
validate-password=FORCE_PLUS_PERMANENT

然后执行show plugins命令查看是否启用成功:
mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+

设置后的密码强度审计相关参数如下:

mysql> show global variables like 'validate%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | STRONG |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
6 rows in set (0.00 sec)

--修改密码,不符合规则会报错

mysql> SET PASSWORD = PASSWORD('123456');  
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

mysql> SET PASSWORD = PASSWORD('aisino123!');
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements


修改成功,大小写加数字和特殊字符最少1个,密码长度最少8位:

mysql> SET PASSWORD = PASSWORD('Aisino123!');  --大小写字码加数字和特殊字符,最少8位
Query OK, 0 rows affected (0.00 sec)


相关参数解释如下:

validate_password_policy 这个参数用于控制validate_password的验证策略 0-->low  1-->MEDIUM  2-->strong。
validate_password_length密码长度的最小值(这个值最小要是4)。
validate_password_number_count 密码中数字的最小个数。
validate_password_mixed_case_count大小写的最小个数。
validate_password_special_char_count 特殊字符的最小个数。
validate_password_dictionary_file 字典文件(插件用于验证密码强度的字典文件路径)

猜你喜欢

转载自www.cnblogs.com/paul8339/p/10150429.html
今日推荐