• MySQL密码复杂度策略


    MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格。使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置。

    本文采用测试环境:MySQL 8.0.15

    一、查看所需插件

    1.1 在 MySQL安装目录中,\MySQL Server 8.0\lib\plugin 可以看到默认存在validate_password.dll

    1.2 在MySQL 8.0.15中默认没有安装这个插件,我们可以通过 SELECT * from mysql.plugin; 查看,列表为空。

    二、安装插件

    2.1 进入MySQL安装插件

     
    添加:   mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.dll'; 卸载:   mysql> UNINSTALL PLUGIN validate_password;

    插件安装后,使用 show plugins; 查看是否启用成功

    2.2 查看默认策略配置:

    查看默认策略配置命令show variables like 'validate_password%';

    三、测试

    3.1 修改密码

     
    alter us提示er 'root'@'localhost' identified by '123456789'; #提示错误 [SQL]alter user 'root'@'localhost' identified by '123456789'; [Err] 1819 - Your password does not satisfy the current policy requirements

    四、各项值说明

    validate_password_policy:密码安全策略,默认MEDIUM策略

    策略检查规则
    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

    validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

    validate_password_length:密码最少长度

    validate_password_mixed_case_count:大小写字符长度,至少1个

    validate_password_number_count :数字至少1个 validate_password_special_char_count:特殊字符至少1个

    修改策略(将策略要求置为LOW,长度要求置为1)

     
    set global validate_password_policy=0; set global validate_password_length=1;

    经测试,最小长度为4,设置为1无效,不晓得为什么,后面再查询下。

    如不需要,可关闭复杂性策略

     
    mysql> set global validate_password_policy=0; # 关闭密码复杂性策略 mysql> set global validate_password_length=1; # 设置密码复杂性要求密码最低长度为1 mysql> select @@validate_password_policy; # 查看密码复杂性策略 mysql> select @@validate_password_length; # 查看密码复杂性要求密码最低长度大小

    重置密码验证,可成功修改:

     
    alter user 'root'@'localhost' identified by '1234';

    vim /etc/my.cnf
    plugin-load-add=validate_password.so    #在mysql启动时载入插件
    validate-password=FORCE_PLUS_PERMANENT   #为阻止该插件在运行时被删除,设置为永久强制使用

    然后重启mysql

    systemctl restart mysqld
    

    插件对应的库对象文件需在配置选项plugin_dir指定的目录中,可以进数据库看一下目录路径

    show variables like 'plugin_dir';

    字段解读

    validate_password_check_user_name:默认关闭,设置为ON时可以将密码设置成当前用户名
    
    validate_password_dictionary_file:插件用于验证密码强度的字典文件路径。
    
    validate_password_length:密码最小长度。
    
    validate_password_mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
    
    validate_password_number_count:密码至少要包含的数字个数。
    
    validate_password_special_char_count:密码至少要包含的特殊字符数。
    
    validate_password_policy: validate_password强制执行的密码策略
    
    validate_password_policy的值可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。
    
    0/LOW:只检查长度。对于长度测试,所需的长度是validate_password_length系统变量的值
    
    1/MEDIUM:检查长度、数字、大小写、特殊字符。
    
    2/STRONG:检查长度、数字、大小写、特殊字符字典文件。
  • 相关阅读:
    Java 重载机制
    网关、DNS、子网掩码、MAC地址、路由器、猫
    前台?后台?前端?后端?
    JSP初学
    PS笔记
    Pandorabox等类OpenWrt的路由器 实现后端设备接入IPV6(中继代理+NAT)
    三星S5_G9008V 解锁联通4G(安卓6.0)
    一个意外的发现
    硬改路由器-MW310R-AR9341篇
    关于使用硬改的路由器的各种经历
  • 原文地址:https://www.cnblogs.com/zouhong/p/16243118.html
Copyright © 2020-2023  润新知