OceanBase学习之路28|密码复杂度策略是什么?

OceanBase 数据库 MySQL 模式的密码复杂度策略,兼容 MySQL 数据库的密码策略。为了防止恶意的密码攻击,提升数据库的安全性,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 :表示仅包含密码长度检测。默认值为  low
  • Medium:表示包括密码长度检测、大写字母个数检测、小写字母个数检测、数字个数检测、特殊字符个数检测、用户名密码相同检测。
validate_password_special_char_count 用户密码至少包含的特殊字符个数。 默认值为  0

更多变量的介绍及说明信息,请参见《系统参考》文档中的  系统变量 章节。

设置密码复杂度

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

  1. 以管理员用户登录数据库的 MySQL 租户。

  2. 设置变量值。

    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. 退出后重新登录,确认设置是否生效。

    obclient> SHOW VARIABLES LIKE 'validate%';
    +--------------------------------------+--------+
    +--------------------------------------+--------+
    | VARIABLE_NAME                        | VALUE  |
    +--------------------------------------+--------+
    | validate_password_check_user_name    | on     |
    | 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. 创建用户,验证密码复杂度策略。

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

    obclient> CREATE USER sectest1 IDENTIFIED BY '***1**';
    ERROR 1819 (HY000): Your password does not satisfy the current policy
    requirements
    obclient> CREATE USER sectest1 IDENTIFIED BY '***1_%';
    Query OK, 0 rows affected


请使用浏览器的分享功能分享到微信等