Mysql密码策略

本文介绍如何在MySQL中配置密码策略,包括安装密码验证插件、理解相关全局参数及其作用,以及如何修改这些参数以适应不同的安全性需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于近期负责项目等报二级,涉及到“建议数据库设置密码复杂度和定期更换用户口令”这一项,在这里分享一下官方文档。

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)

 

<think>好的,用户想了解MySQL密码策略配置方法和规则。首先我需要回忆一下相关的知识,然后结合提供的引用内容来组织答案。 根据引用内容,MySQL密码策略涉及多个方面,比如密码复杂度、历史密码、重用间隔等。用户可能需要知道如何查看当前策略,如何修改策略参数,以及如何启用或关闭相关插件。 首先,查看密码策略的方法,引用[2]提到可以使用`show variables like 'password%';`命令,这会显示password_history、password_reuse_interval等参数。此外,引用[3]和[4]提到了validate_password插件,这可能影响密码策略的设置。需要说明如何安装或配置这个插件,以及相关的变量。 然后,配置密码策略的具体步骤。例如,设置密码历史次数、最小长度、混合大小写等。引用[2]和[3]中的示例代码可以展示如何修改这些参数。另外,引用[5]提到了连接控制插件,用于登录失败策略,这部分也是密码安全的一部分,可能需要包括在回答中。 还需要注意不同版本的差异,比如MySQL 5.7和8.0可能有不同的默认设置或插件名称。例如,引用[4]中提到的validate_password.dll适用于Windows系统,而Linux可能使用.so文件。需要提醒用户根据系统环境调整配置。 另外,用户可能需要了解如何关闭密码策略,比如在测试环境中。引用[3]和[4]提供了关闭validate_password的方法,例如卸载插件或修改配置文件。需要指出这可能会降低安全性,仅建议在非生产环境使用。 最后,总结配置步骤,并确保每个步骤都有对应的命令示例,比如修改全局变量、安装插件、查看当前策略等。同时,生成相关的问题,帮助用户进一步学习,例如如何分析策略影响或优化配置。</think>### MySQL密码策略配置方法及规则详解 #### 一、查看当前密码策略配置 1. **查看密码策略参数** 执行以下SQL命令查看与密码策略相关的参数: ```sql SHOW VARIABLES LIKE 'password%'; ``` 输出结果包含: - `password_history`:历史密码重复次数限制(例如禁止使用最近5次用过的密码- `password_reuse_interval`:密码重用时间间隔(例如禁止在365天内重复使用旧密码- `password_require_current`:修改密码时是否需要验证旧密码[^2] 2. **查看密码复杂度插件状态** MySQL通过`validate_password`插件实现密码复杂度控制: ```sql SHOW VARIABLES LIKE 'validate_password%'; ``` 关键参数说明: - `validate_password_length`:密码最小长度(默认8) - `validate_password_mixed_case_count`:至少需要的大小写字母数量 - `validate_password_special_char_count`:至少需要的特殊字符数量[^3] --- #### 二、配置密码策略规则 ##### 方法1:动态修改参数(立即生效) ```sql -- 设置密码最小长度为10 SET GLOBAL validate_password_length = 10; -- 禁止使用最近5次的历史密码 SET GLOBAL password_history = 5; -- 启用修改密码时验证旧密码 SET GLOBAL password_require_current = ON; ``` ##### 方法2:配置文件修改(永久生效) 在`my.cnf`或`my.ini`中添加配置: ```ini [mysqld] # 密码插件配置(Windows系统示例) plugin-load-add=validate_password.dll validate_password_policy=STRONG validate_password_length=12 password_history=6 ``` 重启MySQL服务使配置生效[^4] --- #### 三、进阶安全策略配置 1. **登录失败锁定策略** 通过`CONNECTION_CONTROL`插件实现: ```sql -- 安装插件(Linux系统使用.so后缀) INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.dll'; -- 设置连续失败3次后延迟10分钟登录 SET PERSIST connection_control_failed_connections_threshold = 3; SET PERSIST connection_control_min_connection_delay = 600000;[^5] ``` 2. **密码策略等级设置** `validate_password_policy`支持以下等级: - `LOW`:仅检查长度 - `MEDIUM`:检查长度+数字/大小写字母 - `STRONG`:增加字典文件检查[^3] --- #### 四、关闭密码策略(仅测试环境建议) ```sql -- 卸载密码策略插件 UNINSTALL PLUGIN validate_password; -- 或通过配置文件禁用 [mysqld] validate_password = OFF ``` ⚠️ 注意:关闭策略会显著降低系统安全性[^3] ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值