加入收藏 | 设为首页 | 会员中心 | 我要投稿 菏泽站长网 (https://www.0530zz.cn/)- 数据工坊、负载均衡、数据快递、云计算、事件网格!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql之validate_password_policy

发布时间:2022-08-10 09:41:14 所属栏目:MySql教程 来源:互联网
导读:但是呢,上一篇遗留一个问题,就是mysql修改密码时候遇到的一个问题:密码校验策略。 引用多篇文章的内容,自己梳理了一下,添加了一点自己的理解。老样子,请看大屏幕: 前言 validate_password插件是mysql5.6以后可以引入的一个新密码校验插件(网友说的,
  但是呢,上一篇遗留一个问题,就是mysql修改密码时候遇到的一个问题:密码校验策略。
 
  引用多篇文章的内容,自己梳理了一下,添加了一点自己的理解。老样子,请看大屏幕:
 
  前言
  validate_password插件是mysql5.6以后可以引入的一个新密码校验插件(网友说的,同时还说要用这个插件至少要求mysql5.6.6之后的版本,没啥重要的,就没去验证了),在mysql5.7之后会自动安装的(这个是真的,我装的5.7.21是这样的)。
 
 
 
  validate_password_policy是随着validate_password插件诞生而诞生的,换句话说如果没有安装validate_password插件,就不用看下面的内容了。
 
  从创建用户说起:如我们在mysql中可以用grant all on *.* to userd@'localhost' identified by '123'; 来创建一个userd用户,虽然用户是创建成功了,但是这个用户的密码强度太低了非常容易被破解;为了把问题解决在摇篮里,最好是在创建用户时就验证密码强度,如果强度达不到要求就不允许创建。为了达到这个目地validate_password插件应运而生,如果没有装过validate_password插件,可以如下安装(未测试过):
 
  install plugin valaidte_password soname 'validate_password.so';
  密码校验策略典型例子
  第一次安装完mysql不管是用临时密码登入还是通过免密方式修改密码登入之后,如果没有马上修改密码,而有其他的对数据库的操作动作都会报错:
 
  ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
  这个时候如果直接修改密码:
 
  alter user 'root'@'localhost' identified by '123456789';
  就会触发mysql的安全校验问题了:
 
  ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  validate_password_policy作用
  判断修改密码时候新密码是否符合当前的策略,不满足报错,不让修改。
 
  validate_password_policy类型
  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
  用于控制validate_password行为系统参数:
    这些参数是要安装好validate_password 插件后才能通过show variables like 'validate_password%';看到。
 
    001、validate_password_policy 这个参数用于控制validate_password的验证策略 0-->low  1-->MEDIUM  2-->strong。
 
    002、validate_password_length密码长度的最小值(这个值最小要是4)。
 
    003、validate_password_number_count 密码中数字的最小个数。
 
    004、validate_password_mixed_case_count大小写的最小个数。
 
    005、validate_password_special_char_count 特殊字符的最小个数。
 
    006、validate_password_dictionary_file 字典文件
 
  查看所有的validate_password相关的参数值
 
 
 
  修改策略方式
  set global validate_password_policy=0;
  策略解释
  0 or LOW
  校验级别最低,只校验密码长度,只要长度跟validate_password_length一样即可,默认长度是8位。可以通过:
 
  select @@validate_password_length;
  来查询当前设置的密码长度。
 
  validate_password_length最小值是4位,组成如下:
 
  validate_password_number_count
  + validate_password_special_char_count
  + (2 * validate_password_mixed_case_count)
  其中,validate_password_number_count指定了密码中数据的长度,validate_password_special_char_count指定了密码中特殊字符的长度,validate_password_mixed_case_count指定了密码中大小字母的长度。这些参数,默认值均为1,所以validate_password_length最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4。
 
  直接设置validate_password_length
  set global validate_password_length=7
  间接设置validate_password_length
  validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count中任何一个值被修改了,则validate_password_length将进行动态修改。
 
  修改方式
  以validate_password_mixed_case_count为例子,另外几个一样的修改方式:
 
  set global validate_password_mixed_case_count=2
  注意
  动态修改,不一定会直接影响到validate_password_length的长度,如果validate_password_length已经是最小值时才会被动态修改掉,否则不会。
 
  1 or MEDIUM
  这个时候首先要满足的是validate_password_policy=0时的验证要求。然后现去验证密码中的数字个数,大小写个数,特殊字符个数。这些又分别由validate_password_number_count,validate_password_mixed_case_count,validate_password_special_char_count 这几个参数来控制。
 
  2 or STRONG
  这个时候必须先满足0,1的要求,然后它还追加了一个,对于密码中任意连续4个(或4个让上)字符不得是字典中的单词(validate_password_dictionary_file)
 
  注意
  validate_password_number_count,validate_password_special_char_count,validate_password_mixed_case_count三个的改动只会直接修改掉已经处在最小值的valide_password_length的值。

(编辑:菏泽站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读