MySQL8.0以后密码修改策略

本文详细介绍了MySQL8.0的密码策略,包括validate_password.policy的三种级别及其含义,以及如何设置密码长度、字母、数字和特殊字符的要求。通过修改全局变量,可以定制不同的密码复杂度规则。同时,提到了validate_password.dictionary_file对于强密码策略的影响,并展示了修改用户密码的方法。

查看密码策略(修改临时密码之后才可查看)

show variables like 'validate_password%';

在这里插入图片描述
8.0之前 validate_password_ 8.0之后validate_password.

通过查看到的密码策略我们知道mysql8.0后默认密码策略为密码长度不能小于8,必须包含一个字母,必须包含一个数字,必须包含一个特殊字符

validate_password.policy(校验规则)

取值范围[0,1,2],默认值1

0(LOW):只校验长度;

1(MEDIUM):校验长度、数字、大小写字母和特殊字符;

2(STRONG):校验长度、数字、大小写字母、特殊字符和dictionary_file

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_dictionary_file

插件用于验证密码强度的字典文件路径

修改密码策略

密码验证策略低要求

set global validate_password.policy=0;    # (0或LOW代表低级)

密码至少要包含的小写字母个数和大写字母个数

set global validate_password.mixed_case_count=0;

密码至少要包含的数字个数

set global validate_password.number_count=0;

密码至少要包含的特殊字符数

set global validate_password.special_char_count=0;

密码长度

set global validate_password.length=6;

修改密码

ALTER user 'root'@'localhost' IDENTIFIED BY '密码';  # 密码不能使用root
<think>我们正在使用MySQL 8.0,需要配置密码验证策略。根据引用[1]和引用[2],MySQL 8.0提供了密码管理组件,可以设置密码策略,包括密码长度、混合大小写、数字和特殊字符等。 步骤: 1. 确认已安装密码验证组件。 2. 查看当前的密码策略设置。 3. 根据需要修改密码策略参数。 具体操作如下: ### 1. 安装密码验证组件(如果尚未安装) MySQL 8.0默认可能已经安装,但为了确保,可以执行: ```sql INSTALL COMPONENT 'file://component_validate_password'; ``` 如果已经安装,再次安装会报错,可以忽略。 ### 2. 查看当前的密码策略设置 ```sql SHOW VARIABLES LIKE 'validate_password%'; ``` 这将显示所有与密码策略相关的变量,例如: - `validate_password.policy`: 密码策略等级(LOW, MEDIUM, STRONG) - `validate_password.length`: 密码最小长度 - `validate_password.mixed_case_count`: 需要包含的大写和小写字母的最小数量 - `validate_password.number_count`: 需要包含的数字的最小数量 - `validate_password.special_char_count`: 需要包含的特殊字符的最小数量 - 等等 ### 3. 修改密码策略 #### 修改全局策略等级 策略等级有三种: - `LOW`:只检查密码长度。 - `MEDIUM`:检查长度、大小写字母、数字和特殊字符。 - `STRONG`:在`MEDIUM`的基础上,还检查是否与字典文件匹配(需要先配置字典)。 例如,将策略等级设置为`MEDIUM`: ```sql SET GLOBAL validate_password.policy = MEDIUM; ``` #### 修改其他参数 例如,设置密码最小长度为10: ```sql SET GLOBAL validate_password.length = 10; ``` 设置需要至少一个大写字母、一个小写字母、一个数字和一个特殊字符(在`MEDIUM`或`STRONG`策略下会自动设置这些要求,但也可以单独调整): ```sql SET GLOBAL validate_password.mixed_case_count = 1; SET GLOBAL validate_password.number_count = 1; SET GLOBAL validate_password.special_char_count = 1; ``` ### 4. 永久生效(可选) 上述设置是动态的,但重启后会失效。要永久生效,需要在配置文件`my.cnf`(或`my.ini`)中添加: ```ini [mysqld] validate_password.policy=MEDIUM validate_password.length=10 validate_password.mixed_case_count=1 validate_password.number_count=1 validate_password.special_char_count=1 ``` 然后重启MySQL服务。 ### 5. 验证策略 修改后,尝试修改用户密码,如果不符合策略,会报错。例如: ```sql ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'weakpass'; ``` 如果密码太弱,将会收到错误提示。 ### 注意事项 - 修改策略后,只对新设置的密码生效,不会强制已存在的密码立即修改。 - 如果需要强制用户下次登录时修改密码,可以使用: ```sql ALTER USER 'user'@'host' PASSWORD EXPIRE; ``` ### 示例:将密码策略设置为STRONG,并设置最小长度为12 ```sql SET GLOBAL validate_password.policy = STRONG; SET GLOBAL validate_password.length = 12; ``` ### 引用说明 以上步骤参考了MySQL 8.0密码管理文档[^1][^2]。 --- §§相关问题§§ 1. 如何查看MySQL中已安装的组件? 2. 如何卸载密码验证组件? 3. 如何配置MySQL密码过期策略? 4. 如何让用户下次登录时强制修改密码?</think>### MySQL 8.0 密码验证策略配置指南 以下是配置MySQL 8.0密码验证策略的完整步骤: #### 1. **查看当前密码策略** ```sql SHOW VARIABLES LIKE 'validate_password%'; ``` 输出示例: ``` +--------------------------------------+--------+ | 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 | +--------------------------------------+--------+ ``` #### 2. **密码策略参数说明** | 参数 | 说明 | 取值范围 | |------|------|----------| | `validate_password.policy` | 密码强度等级 | `LOW`, `MEDIUM`, `STRONG` | | `validate_password.length` | 最小密码长度 | 4-∞ | | `validate_password.mixed_case_count` | 大小写字母最小数量 | 1-∞ | | `validate_password.number_count` | 数字最小数量 | 1-∞ | | `validate_password.special_char_count` | 特殊字符最小数量 | 1-∞ | | `validate_password.dictionary_file` | 禁用单词字典文件 | 文件路径 | | `validate_password.check_user_name` | 是否检查用户名 | `ON`/`OFF` | #### 3. **修改密码策略(临时生效)** ```sql -- 设置密码强度策略为STRONG SET GLOBAL validate_password.policy = STRONG; -- 设置最小密码长度为12 SET GLOBAL validate_password.length = 12; -- 要求至少2个大写字母+2个小写字母 SET GLOBAL validate_password.mixed_case_count = 2; -- 要求至少1个特殊字符 SET GLOBAL validate_password.special_char_count = 1; -- 禁用密码中包含用户名 SET GLOBAL validate_password.check_user_name = OFF; ``` #### 4. **永久修改策略(配置文件)** 在`my.cnf`或`my.ini`中添加: ```ini [mysqld] # 密码策略设置 validate_password.policy = STRONG validate_password.length = 12 validate_password.mixed_case_count = 2 validate_password.number_count = 2 validate_password.special_char_count = 1 validate_password.check_user_name = OFF ``` 重启MySQL服务使配置生效: ```bash sudo systemctl restart mysql ``` #### 5. **策略等级说明** | 等级 | 要求 | |------|------| | **LOW** | 仅检查密码长度 | | **MEDIUM** | 检查长度+数字+大小写+特殊字符 | | **STRONG** | MEDIUM基础上增加字典检查 | #### 6. **创建符合策略密码示例** ```sql -- 创建用户时使用符合策略密码 CREATE USER 'app_user'@'%' IDENTIFIED BY 'Secure@Pass123'; -- 修改现有用户密码 ALTER USER 'admin'@'localhost' IDENTIFIED BY 'New!P@ssw0rd2023'; ``` #### 7. **常见问题处理** **问题:** 无法设置简单密码 ```sql -- 临时降低策略(仅限测试环境) SET GLOBAL validate_password.policy = LOW; ALTER USER 'test'@'%' IDENTIFIED BY 'temp123'; ``` **问题:** 兼容旧认证方式 ```sql ALTER USER 'legacy_app'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; ``` > **注意**:修改策略后,所有新密码密码变更都需要符合新规则,但现有密码不受影响[^1][^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值