MySQL密码策略管理插件validate_password用法详解

 更新时间:2024年11月06日 10:51:19   作者:_陈哈哈  
自MySQL5.6起,引入validate_password插件,用于密码长度和强度管理,在MySQL8.0中,该插件通过服务器组件重新实现,插件默认不允许密码为用户名,可设定最小长度和强度等级,还可要求密码包含数字、大小写字母和特殊字符

  自MySQL5.6版本,引入了新密码校验插件validate_password, 用于管理用户密码长度、强度等,保障账号的安全性。而到了MySQL 8.0,引入了服务器组件(Components)这个特性,validate_password插件已用服务器组件重新实现。

一、密码策略插件validate_password用法介绍

  validate_password是MySQL默认的密码管理策略插件,可通过配置对用户密码长度、强度进行管理;

1 - 1、策略查询命令

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| 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)

1 - 2、属性信息介绍

属性默认值属性描述
validate_password_check_user_nameOFF设置为ON的时候表示能将密码设置成当前用户名。
validate_password_dictionary_file用于检查密码的字典文件的路径名,默认为空
validate_password_length8密码的最小长度,也就是说密码长度必须大于或等于8
validate_password_mixed_case_count1如果密码策略是中等或更强的,validate_password要求密码具有的小写和大写字符的最小数量。对于给定的这个值密码必须有那么多小写字符和那么多大写字符。
validate_password_number_count1密码必须包含的数字个数
validate_password_policyMEDIUMright-aligned 密码强度检验等级,可以使用数值0、1、2或相应的符号值LOW、MEDIUM、STRONG来指定。
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符、字典文件。
validate_password_special_char_count1密码必须包含的特殊字符个数

1 - 3、修改方式(命令)

如下,是修改密码强度等级

SET GLOBAL validate_password_policy=LOW;     -- For LOW
SET GLOBAL validate_password_policy=MEDIUM;  -- For MEDIUM
SET GLOBAL validate_password_policy=STRONG;  -- For HIGH
-- 同等于下                            _
SET GLOBAL validate_password_policy = 0;     -- For LOW
SET GLOBAL validate_password_policy = 1;     -- For MEDIUM
SET GLOBAL validate_password_policy = 2;     -- For HIGH

MySQL密码强度等级

密码规则强度得分
Length < 40
Length ≥ 4 and < validate_password.length25
Satisfies policy 1 (LOW:只验证长度)50
Satisfies policy 2 (MEDIUM:验证长度、数字、大小写、特殊字符)75
Satisfies policy 3 (STRONG:验证长度、数字、大小写、特殊字符、字典文件)100

如下,是密码长度策略控制,代表最小长度,但最小长度为4;如果设置小于4,也会默认为4的。

SET GLOBAL validate_password_length=6;

二、首次安装MySQL后的策略配置

  通常,在我们安装完并启动MySQL后,validate_password插件就会开始运行,系统会给root用户自动生成一个随机密码,存放到日志文件mysqld.log中,用于首次登录使用。

  可通过命令获取root用户的临时密码,如下:waQ,qR%be2(5,可以用该密码进行首次登录。

# grep “password” /var/log/mysqld.log
2020-12-19T05:16:36.218234Z 1 [Note] A temporary password is generated for root@localhost: waQ,qR%be2(5

登录后系统会强制让你重置root密码,否则不允许对数据库进行操作。

mysql> select user();
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

如果只是修改为一个简单的密码,会报以下错误:

mysql>  ALTER USER 'root'@'localhost' IDENTIFIED BY '12345678';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果你想设置成“123456”这种弱口令,需要先将validate_password_policy设为LOW;这样MySQL就只检查密码长度了。

mysql> SET GLOBAL validate_password_policy=LOW;
Query OK, 0 rows affected (0.04 sec)

三、安装validate_password插件

有些版本较低或未进行全部插件安装的MySQL,会发现如下情况:

mysql> SHOW VARIABLES LIKE 'validate_password%';
Empty set (0.00 sec)

没看错,未安装~

那么请执行如下命令安装即可:

mysql> install plugin validate_password soname 'validate_password.so';
Query OK, 0 rows affected (0.17 sec)

卸载命令:

mysql> UNINSTALL PLUGIN  validate_password;
Query OK, 0 rows affected, 1 warning (0.01 sec)

安装后可通过命令 show plugins 查看已安装的MySQL插件:状态为:ACTIVE表示已激活。

mysql> show plugins;
+----------------------------+----------+--------------------+----------------------+---------+
| Name                       | Status   | Type               | Library              | License |
+----------------------------+----------+--------------------+----------------------+---------+
| binlog                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| mysql_native_password      | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| sha256_password            | ACTIVE   | AUTHENTICATION     | NULL                 | GPL     |
| MRG_MYISAM                 | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| PERFORMANCE_SCHEMA         | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MEMORY                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| InnoDB                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| INNODB_TRX                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCKS               | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_LOCK_WAITS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP                 | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_RESET           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM              | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMPMEM_RESET        | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_CMP_PER_INDEX_RESET | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_PAGE_LRU     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_BUFFER_POOL_STATS   | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_TEMP_TABLE_INFO     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_METRICS             | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DEFAULT_STOPWORD | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_DELETED          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_BEING_DELETED    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_CONFIG           | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_CACHE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_FT_INDEX_TABLE      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLES          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESTATS      | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_INDEXES         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_COLUMNS         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FIELDS          | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_FOREIGN_COLS    | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_TABLESPACES     | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_DATAFILES       | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| INNODB_SYS_VIRTUAL         | ACTIVE   | INFORMATION SCHEMA | NULL                 | GPL     |
| CSV                        | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| MyISAM                     | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| FEDERATED                  | DISABLED | STORAGE ENGINE     | NULL                 | GPL     |
| BLACKHOLE                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| partition                  | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ARCHIVE                    | ACTIVE   | STORAGE ENGINE     | NULL                 | GPL     |
| ngram                      | ACTIVE   | FTPARSER           | NULL                 | GPL     |
| validate_password          | ACTIVE   | VALIDATE PASSWORD  | validate_password.so | GPL     |
+----------------------------+----------+--------------------+----------------------+---------+
45 rows in set (0.00 sec)

附、一张有故事的照片(十四)


是心灵的寄托

我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:竹蜻蜓不会飞,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply

到此这篇关于MySQL密码策略管理插件validate_password的文章就介绍到这了,更多相关mysql validate_password内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中常见的几种日志汇总

    MySQL中常见的几种日志汇总

    这篇文章主要给大家介绍了关于MySQL中常见的几种日志,文中通过实例代码结束的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • 一篇文章读懂什么是MySQL索引下推(ICP)

    一篇文章读懂什么是MySQL索引下推(ICP)

    当MySQL使用一个索引来检索表中的行时,可以使用ICP作为一种优化方案,下面这篇文章主要给大家介绍了如何通过一篇文章读懂什么是MySQL索引下推(ICP)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • MYSQL数据库连接池及常见参数调优方式

    MYSQL数据库连接池及常见参数调优方式

    这篇文章主要介绍了MYSQL数据库连接池及常见参数调优方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 使用Python的Django框架中的压缩组件Django Compressor

    使用Python的Django框架中的压缩组件Django Compressor

    这篇文章主要介绍了使用Python的Django框架中的压缩组件Django Compressor,这个工具主要用于实现js/css的压缩,需要的朋友可以参考下
    2015-05-05
  • 一文了解Mysql分区的使用

    一文了解Mysql分区的使用

    分区允许根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分,本文主要介绍了Mysql分区的使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • mysql 5.7.17 zip安装配置教程 mysql启动失败的解决方法

    mysql 5.7.17 zip安装配置教程 mysql启动失败的解决方法

    这篇文章主要为大家详细介绍了mysql 5.7.17 zip安装配置教程,以及mysql启动失败的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • VS2019连接mysql8.0数据库的教程图文详解

    VS2019连接mysql8.0数据库的教程图文详解

    这篇文章主要介绍了VS2019连接mysql8.0数据库的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Mysql select in 按id排序实现方法

    Mysql select in 按id排序实现方法

    有时候我们在后台选择了一系列的id,我们想安装填写id的顺序进行排序,那么就需要下面的order by方法,测试通过
    2013-03-03
  • MySQL七大JOIN的具体使用

    MySQL七大JOIN的具体使用

    本文主要介绍了MySQL七大JOIN的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法

    MySQL出现this is incompatible with sql_mode=only_full_grou

    mysql是高版本,当执行group by时,select的字段不属于group by的字段的话,sql语句就会报错,下面这篇文章主要给大家介绍了关于MySQL出现this is incompatible with sql_mode=only_full_group_by错误的解决办法,需要的朋友可以参考下
    2023-02-02

最新评论