首页 > 数据库 >mysql设置密码复杂度

mysql设置密码复杂度

时间:2022-08-31 16:37:37浏览次数:54  
标签:插件 复杂度 密码 mysql policy validate password


MySQL密码复杂度策略设置


MySQL 系统自带有 validate_password 插件,此插件可以验证密码强度,未达到规定强度的密码则不允许被设置。MySQL 5.7 及 8.0 版本默认情况下貌似都不启用该插件,这也使得我们可以随意设置密码,比如设置为 123、123456等。如果我们想从根源上规范密码强度,可以启用该插件,下面一起来看下如何通过此插件来设置密码复杂度策略。
1)查看是否已安装此插件
进入 MySQL 命令行,通过 show plugins 或者查看 validate_password 相关参数可以判断是否已安装此插件。若没有相关参数则代表未安装此插件
# 安装前检查 为空则说明未安装此插件

mysql> show variables like 'validate%';
Empty set (0.00 sec)
2)安装 validate_password 插件
# 通过 INSTALL PLUGIN 命令可安装此插件
# 每个平台的文件名后缀都不同 对于 Unix 和类 Unix 系统,为.so,对于 Windows 为.dll
mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
Query OK, 0 rows affected, 1 warning (0.28 sec)
3) 查看 validate_password 相关参数
mysql> show variables like 'validate%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | ON |
| 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 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)
4)密码复杂度策略具体设置
学习完以上参数,我们就可以根据自身情况来具体设置密码复杂度策略了,比如我想让密码至少 10 位且包含大小写字母、数字、特殊字符,则可以这样设置。
# 设置密码长度至少10位
mysql> set global validate_password_length = 10;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'validate%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | ON |
| validate_password_dictionary_file | |
| validate_password_length | 10 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.00 sec)

# 若想永久生效,建议将以下参数写入配置文件my.cnf

vim /etc/my.cnf

[mysqld]
plugin-load = validate_password.so
validate_password_length = 10
validate_password_policy = 1
validate-password = FORCE_PLUS_PERMANENT

5)测试密码复杂度
密码复杂度策略只对生效后的操作有效,比如说你之前有个账号,密码是 123 ,则该账号还是可以继续使用的,不过若再次更改密码则需满足复杂度策略。下面我们来测试下密码复杂度策略的具体效果。
# 新建用户设置密码

mysql> create user 'testuser'@'%' identified by '123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user 'testuser'@'%' identified by 'ab123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user 'testuser'@'%' identified by 'Ab@123';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user 'testuser'@'%' identified by 'Bsdf@5467672';
Query OK, 0 rows affected (0.01 sec)

# 更改密码

mysql> alter user 'testuser'@'%' identified by 'dfgf3435';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> alter user 'testuser'@'%' identified by 'dBsdf@5467672';
Query OK, 0 rows affected (0.01 sec)

6)密码强度相关参数解释
安装 validate_password 插件后,多了一些密码强度相关参数,这些参数从字面意思上也很容易看懂,下面简单解释下几个重点参数。
1、validate_password_policy
代表的密码策略,默认是MEDIUM 可配置的值有以下:
0 or LOW 仅需需符合密码长度(由参数validate_password_length指定)
1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符
2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中
2、validate_password_dictionary_file
用于配置密码的字典文件,当validate_password_policy设置为STRONG时可以配置密码字典文件,字典文件中存在的密码不得使用。
3、validate_password_length
用来设置密码的最小长度,默认值是8
4、validate_password_mixed_case_count
当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少同时拥有的小写和大写字母的数量,默认是1最小是0;默认是至少拥有一个小写和一个大写字母。
5、validate_password_number_count
当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的数字的个数,默认1最小是0
6、validate_password_special_char_count
当validate_password_policy设置为MEDIUM或者STRONG时,密码中至少拥有的特殊字符的个数,默认1最小是0

标签:插件,复杂度,密码,mysql,policy,validate,password
From: https://www.cnblogs.com/xgsh/p/16643520.html

相关文章

  • Mysql基础(三)多表查询
    学习之前需要创建的数据表和数据--部门表CREATETABLE`dept`(`depton`mediumint(8)UNSIGNEDNOTNULLDEFAULT0,`dname`varchar(32)CHARACTERSETutf8C......
  • 短视频后台Mysql和Redis
    RabbitMQ一、什么是消息队列消息指的是两个应用间传递的数据。数据的类型有很多种形式,可能只包含文本字符串,也可能包含嵌入对象。“消息队列(MessageQueue)”是在消息......
  • 2 计算模型与复杂性类 | 密码协议课程笔记
    1计算模型1:图灵机1.1图灵机的定义图灵机是一个简洁的计算模型。我们可以将图灵机视为拥有一个无限长、可以双向移动的工作带的有限自动机。在初始阶段,工作带开始的几......
  • Mysql定时备份指南
    Mysql定时备份指南1、登录数据库服务器,创建目录mkdir-p/data/mysqlbak/datamkdir-p/data/mysqlbak/scriptsmkdir-p/data/mysqlbak/logs2、创建备份脚本文件Vi......
  • mysql安装及10061错误解决
    mysql出现10061错误解决方法 1.开始菜单->运行(cmd)->寻径到MySQL文件中的bin目录下如:D:\MySQL\mysql-5.6.24-win32\bin2.输入指令:mysqld--skip-grant-tables 回车//......
  • mysql用户重命名
    如何修改mysql默认账户名root?首先说一下为什么我要改这个root用户名,正常来说,数据库用户名又不经常更改,用啥都是应用,为什么非要改呢?因为最近在搞一个项目,本地数据库用户名为......
  • Mysql定时备份指南
    Mysql定时备份指南1、登录数据库服务器,创建目录mkdir-p/data/mysqlbak/datamkdir-p/data/mysqlbak/scriptsmkdir-p/data/mysqlbak/logs2、创建备份脚本文件Vi......
  • 【MySQL】MariaDB使用connect存储引擎访问SQLServer中的表
    借助connect存储引擎,Mariadb可以访问任何ODBC数据源。本文是以CentOS7为例。安装的内容有:ODBCdriver,unixODBC 1.下载ODBC对应linux的驱动下载地址:https://docs.mi......
  • CleanMyMac清理垃圾时频繁要求输入密码如何解决?
    有不少用户反馈在使用CleanMyMac清理系统垃圾文件的时候会频繁要求输入开机密码,想要进行更改,不管是新版本还是老版本都是这样,今天小编为您带来了CleanMyMac清理垃圾时频繁......
  • MySql Replication主从环境搭建
    1、主库安装完毕之后,执行以下查询:SHOWVARIABLESLIKE'log_bin';SHOWVARIABLESLIKE'binlog_format';SHOWVARIABLESLIKE'server_id';SHOWVARIABLESLIKE'i......