---
title: "密码复杂度 - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: 密码复杂度 为了防止恶意的密码攻击，OceanBase 数据库用户可以根据需要设置密码的复杂度函数，验证用户登录身份，来提升数据库的安全性。本文介绍如何设置 OceanBase 数据库登录用户的密码复杂度。 相关变量介绍 OceanBase 数据库 MySQL 模式下，用户可以通过设置一系列系统变量规定密码复杂度规则…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.5.0

# 密码复杂度

更新时间：2026-04-01 10:48:33

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/600.manage/500.security-and-permissions/200.identification-and-authentication/100.identification-and-authentication-of-mysql-mode/200.password-complexity-of-mysql-mode.md)  

为了防止恶意的密码攻击，OceanBase 数据库用户可以根据需要设置密码的复杂度函数，验证用户登录身份，来提升数据库的安全性。本文介绍如何设置 OceanBase 数据库登录用户的密码复杂度。

## 相关变量介绍

OceanBase 数据库 MySQL 模式下，用户可以通过设置一系列系统变量规定密码复杂度规则，这些配置是租户级的。创建用户或修改用户的密码时会根据系统变量的配置对密码进行校验，未通过校验则会报错。涉及的系统变量如下表所示：

| 变量名 | 功能 | 使用说明 |
| --- | --- | --- |
| validate_password_check_user_name | 检查用户密码是否可以和用户名相同。 | - `on` ：表示用户密码不可以和用户名相同。 - `off` ：表示用户密码可以和用户名相同。默认值为 `off`。 |
| validate_password_length | 设置用户密码最小长度。 | 默认值为 0。 |
| validate_password_mixed_case_count | 设置用户密码至少包含的大写字母和小写字母个数。 | 默认值为 0。 |
| validate_password_number_count | 设置用户密码至少包含的数字个数。 | 默认值为 0。 |
| validate_password_policy | 设置密码检查策略。 | - `low`：表示仅包含密码长度检测。 - `medium`：表示包括密码长度检测、大写字母个数检测、小写字母个数检测、数字个数检测、特殊字符个数检测、用户名密码是否相同检测。 |
| validate_password_special_char_count | 用户密码至少包含的特殊字符个数。 | 默认值为 0。 |

## 设置密码的复杂度

#### 注意

生产环境建议设置密码长度为 20 位，包括数字、大写字母、小写字母以及特殊字符。密码的复杂度越低，其被破解的可能性就越大，比如包含用户名、使用重复字符等。出于安全性考虑，需确保用户的密码具有较高的复杂度。

本节以设置密码复杂度规则为最小长度为 8 个字符，至少包含 3 个大写字母、3 个小写字母和 1 个特殊字符、用户密码不可以与用户名相同并且检查策略为 `medium` 为例，提供设置密码复杂度的操作指导。

1. 使用 root 用户登录集群的 MySQL 租户。

   ```shell
   obclient -uroot@mysql -P2881 -h10.xxx.xxx.1 -p*******

   ```
 2. 通过系统变量设置密码的复杂度。

   ```shell
   obclient> SET GLOBAL validate_password_check_user_name=on;
   obclient> SET GLOBAL validate_password_length=8;
   obclient> SET GLOBAL validate_password_mixed_case_count=3;
   obclient> SET GLOBAL validate_password_special_char_count=1;
   obclient> SET GLOBAL validate_password_policy='medium';

   ```
 3. 退出后重新登录，确认变量是否生效。

   ```shell
   obclient> SHOW VARIABLES LIKE 'validate%';
   +--------------------------------------+--------+
   +--------------------------------------+--------+
   | VARIABLE_NAME                        | VALUE  |
   +--------------------------------------+--------+
   | validate_password_check_user_name    | off     |
   | validate_password_length             | 8      |
   | validate_password_mixed_case_count   | 3      |
   | validate_password_number_count       | 0      |
   | validate_password_policy             | medium |
   | validate_password_special_char_count | 1      |
   +--------------------------------------+--------+
   6 rows in set (0.00 sec)

   ```
 4. 验证密码复杂度。

   创建两个用户，分别设置为符合要求的密码和不符合要求的密码。

   ```shell
   obclient> CREATE USER sectest1 IDENTIFIED BY '******';
   ERROR 1819 (HY000): Your password does not satisfy the current policy
   requirements

   obclient> CREATE USER sectest1 IDENTIFIED BY '***1_%';
   Query OK, 0 rows affected

   ```

   如果设置的密码复杂度不符合要求，则用户创建失败。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
