一、validate_password组件安装配置
- 安装组件
INSTALL COMPONENT 'file://component_validate_password';
安装后,密码策略立即生效,但仅影响后续操作(如新建用户或修改密码)。
- 卸载组件
UNINSTALL COMPONENT 'file://component_validate_password';
卸载后,密码复杂度策略失效,可设置简单密码(如 root
)。
- 检查组件状态
SHOW VARIABLES LIKE 'validate_password.%'; -- 查看参数配置SELECT * FROM mysql.component WHERE component_urn LIKE '%validate_password%'; -- 验证是否安装```### 二、validate_password组件核心参数1. **密码策略控制**- **`validate_password.policy`** 定义密码强度等级,可选值:- **0/LOW**:仅检查密码长度(默认长度由 `validate_password.length` 控制,最小为 4。- **1/MEDIUM**(默认):检查长度、数字、大小写字母和特殊字符。- **2/STRONG**:在 MEDIUM 基础上,额外检查密码是否存在于字典文件。- **其他参数**- `validate_password.length`:密码最小长度(默认 8)。- `validate_password.mixed_case_count`:至少需要的大写+小写字母数(默认 1)。- `validate_password.number_count`:至少需要的数字个数(默认 1)。- `validate_password.special_char_count`:至少需要的特殊字符个数(默认 1)。
2. **密码强度评估函数**- 使用 `VALIDATE_PASSWORD_STRENGTH()` 函数评估密码强度(0-100 分),例如:
```sql
SELECT VALIDATE_PASSWORD_STRENGTH('Password123!'); -- 返回强度评分
三、常见问题与解决方案
- ERROR 1819 (密码不符合策略)
- 临时调整策略:
SET GLOBAL validate_password.policy = LOW; -- 降低强度要求SET GLOBAL validate_password.length = 4; -- 最小长度设为 4
永久修改:在 my.cnf
中配置参数(需重启 MySQL).
- 客户端兼容性问题
- MySQL 8.0 默认使用
caching_sha2_password
加密插件,旧客户端可能不支持。可修改用户加密方式:
- MySQL 8.0 默认使用
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';