文档下载建议反馈入口

  • 创建用户
  • 查看用户
  • 修改用户
  • 删除用户

用户管理

创建用户

CREATE USER 语句用于创建新用户,并为新用户设置一个或多个选项,例如创建角色、设置登录密码等。默认情况下,新用户具有登录选项。每条语句只支持创建一个用户。三权分立模式下,新创建的用户,如果被授予业务数据的权限,或者作为成员加入其他普通角色,或者作为角色添加其他普通用户作为其成员,则该用户为普通用户。

所需权限

  • 非三权分立模式下,用户具备创建角色(CREATEROLE)的权限或者是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是拥有创建角色(CREATEROLE)权限的 sysadmin 角色的成员或者普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
IF NOT EXISTS可选关键字。当使用 IF NOT EXISTS 关键字时,如果目标用户不存在,系统创建目标用户。如果目标用户存在,系统创建用户失败,但不会报错。当未使用 IF NOT EXISTS 关键字时,如果目标用户不存在,系统创建用户。如果目标用户存在,系统报错,提示目标用户已存在。
name待创建的用户名。用户名不区分大小写,必须以字母或下划线(_)开头,只支持字母,数字或下划线(_),长度为 1 - 63 个字符。
CREATEROLE创建角色。设置该选项的用户可以创建、修改、删除其他用户或角色。默认情况下,创建用户时不设置该选项。
NOCREATEROLE创建用户时的默认选项,表示禁止创建角色。
LOGIN创建用户时的默认选项,表示用户可以登录 KaiwuDB 服务器。
NOLOGIN禁止登录 KaiwuDB 服务器。默认情况下,创建用户时不设置该选项。
FAILED LOGIN ATTEMPTS设置用户最大连续登录失败尝试次数。最大连续登录失败尝试次数必须为正整数,并使用单引号(')括起来。默认为 5 次。默认情况下,创建用户时不设置该选项。
ACCOUNT UNLOCK解除用户的锁定状态。默认情况下,创建用户时不设置该选项。
PASSWORD <password>设置用户密码,也支持使用 NULL 值。设置该选项的用户可以使用密码安全访问节点。密码必须采用字符串的形式,并使用单引号(')将密码括起来。KaiwuDB 数据库支持配置密码复杂度策略。有关详细信息,参见密码复杂度策略
默认情况下,创建用户时不设置该选项。
VALID UNTIL <date_time>设置密码有效期,也支持使用 NULL 值。设置的时间支持 timestamp 格式,也支持精确到纳秒级别。如果设置的为某一天,默认为 0 时 0 分 0 秒。到达指定日期或时间后,密码失效。设置时需使用单引号(')将密码有效期括起来。在登录 KaiwuDB 数据库时,用户可以在终端上查看该用户的密码到期时间。有关如何查看密码有效期的详细信息,参见查看密码有效期
默认情况下,创建用户时不设置该选项。

语法示例

  • 创建用户。

    以下示例创建 user1 用户。默认情况下,该用户无法创建角色,但可以登录 KaiwuDB 服务器。

    CREATE USER user1;
    CREATE USER
    
  • 创建用户,并赋予该用户创建角色的权限。

    以下示例创建 user2 用户,并赋予该用户创建角色的权限。

    CREATE USER user2 WITH CREATEROLE;
    CREATE USER
    
  • 创建用户,并禁止该用户登录 KaiwuDB 服务器。

    以下示例创建 user3 用户,并禁止该用户登录 KaiwuDB 服务器。

    CREATE USER user3 WITH NOLOGIN;
    CREATE USER
    
  • 创建用户,并为该用户设置密码和密码有效期。

    以下示例创建 user4 用户,并为该用户设置登录 KaiwuDB 服务器的密码和密码有效期。

    CREATE USER user4 WITH PASSWORD '11aa!!AA' VALID UNTIL '2023-01-01 00:00:00+00:00';
    CREATE USER
    
  • 创建用户,并为该用户设置最大连续登录失败尝试次数。

    以下示例创建 user5 用户,并为该用户设置最大连续登录失败尝试次数为 10 次。

    CREATE USER user5 WITH PASSWORD '22aa!!BB' FAILED LOGIN ATTEMPTS '10';
    CREATE USER
    

查看用户

SHOW USERSSHOW ROLES 语句用于查询数据库的用户信息。

所需权限

用户具备 system.userssystem.role_members 表的 SELECT 权限。

语法格式

参数说明

语法示例

SHOW USERS;

执行成功后,控制台输出以下信息:

username|options                              |member_of
--------+-------------------------------------+---------
admin   |CREATEROLE                           |{}
root    |CREATEROLE                           |{admin}
user1   |CREATEROLE                           |{}
user2   |CREATEROLE                           |{}
user3   |VALID UNTIL=2023-01-01 00:00:00+00:00|{}

修改用户

ALTER USER 语句用于为用户更改一个或多个选项,如更改登录密码等。每条语句只能修改一个用户。

所需权限

  • 非三权分立模式下,用户具备创建角色(CREATEROLE)的权限或者是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是拥有创建角色(CREATEROLE)权限的 sysadmin 角色的成员或者普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
IF EXISTS可选关键字。当使用 IF EXISTS 关键字时,如果目标用户存在,系统修改目标用户。如果目标用户不存在,系统修改用户失败,但不会报错。当未使用 IF EXISTS 关键字时,如果目标用户存在,系统修改用户。如果目标用户不存在,系统报错,提示目标用户不存在。
name待修改的用户名。用户名不区分大小写,必须以字母或下划线(_)开头,只支持字母,数字或下划线(_),长度为 1 - 63 个字符。
CREATEROLE创建角色。设置该选项的用户可以创建、修改、删除其他用户或角色。默认情况下,创建用户时不设置该选项。
NOCREATEROLE创建用户时的默认选项,表示禁止创建角色。
LOGIN创建用户时的默认选项,表示用户可以登录 KaiwuDB 服务器。
NOLOGIN禁止登录 KaiwuDB 服务器。默认情况下,创建用户时不设置该选项。
FAILED LOGIN ATTEMPTS设置用户最大连续登录失败尝试次数。最大连续登录失败尝试次数必须为正整数,并使用单引号(')括起来。默认为 5 次。默认情况下,创建用户时不设置该选项。
ACCOUNT UNLOCK解除用户的锁定状态。默认情况下,创建用户时不设置该选项。
PASSWORD <password>设置用户密码,也支持使用 NULL 值。设置该选项的用户可以使用密码安全访问节点。密码必须采用字符串的形式,并使用单引号(')将密码括起来。KaiwuDB 数据库支持配置密码复杂度策略。有关详细信息,参见密码复杂度策略
默认情况下,创建用户时不设置该选项。
VALID UNTIL <date_time>设置密码有效期,也支持使用 NULL 值。设置的时间支持 timestamp 格式,也支持精确到纳秒级别。如果设置的为某一天,默认为 0 时 0 分 0 秒。到达指定日期或时间后,密码失效。设置时需使用单引号(')将密码有效期括起来。在登录 KaiwuDB 数据库时,用户可以在终端上查看该用户的密码到期时间。有关如何查看密码有效期的详细信息,参见查看密码有效期
默认情况下,创建用户时不设置该选项。

语法示例

  • 修改用户,为用户设置 NOCREATEROLE 选项。

    -- 1. 查看用户信息。
    
    SHOW USERS;
      username |                options                | member_of
    -----------+---------------------------------------+------------
      admin    | CREATEROLE                            | {}
      root     | CREATEROLE                            | {admin}
      user1    |                                       | {}
      user2    | CREATEROLE                            | {}
      user3    | NOLOGIN                               | {}
      user4    | VALID UNTIL=2023-01-01 00:00:00+00:00 | {}
    (6 rows)
    
    -- 2. 修改用户选项。
    
    ALTER USER user2 WITH NOCREATEROLE;
    ALTER USER
    
    -- 3. 查看修改结果。
    
    SHOW USERS;
      username |                options                | member_of
    -----------+---------------------------------------+------------
      admin    | CREATEROLE                            | {}
      root     | CREATEROLE                            | {admin}
      user1    |                                       | {}
      user2    |                                       | {}
      user3    | NOLOGIN                               | {}
      user4    | VALID UNTIL=2023-01-01 00:00:00+00:00 | {}
    (6 rows)
    
  • 修改用户的密码和密码有效期。

    以下示例修改 user4 用户的密码和密码有效期。

    -- 1. 修改 user4 用户的用户密码和密码有效期。
    
    ALTER USER user4 WITH PASSWORD '11aa!!AA' VALID UNTIL '2023-01-01 00:00:00+00:00';
    ALTER USER
    
    -- 2. 查看用户信息。
    
    SHOW USERS;
      username |                    options                     | member_of
    -----------+------------------------------------------------+------------
      admin    | CREATEROLE                                     | {}
      root     | CREATEROLE                                     | {admin}
      user1    |                                                | {}
      user2    |                                                | {}
      user3    | NOLOGIN, VALID UNTIL=2023-12-31 00:00:00+00:00 | {}
      user4    | VALID UNTIL=2023-01-01 00:00:00+00:00          | {}
    (6 rows)
    
  • 解锁用户的锁定状态。

    以下示例解锁 user5 用户的锁定状态。

    ALTER USER user5 WITH ACCOUNT UNLOCK;
    

删除用户

DROP USER 语句用于删除已创建的用户。每条语句支持删除多个用户。

所需权限

  • 非三权分立模式下,用户具备创建角色(CREATEROLE)的权限或者是 admin 角色的成员。默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是拥有创建角色(CREATEROLE)权限的 sysadmin 角色的成员或者普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
IF EXISTS可选关键字。当使用 IF EXISTS 关键字时,如果目标用户存在,系统删除目标用户。如果目标用户不存在,系统删除用户失败,但不会报错。当未使用 IF EXISTS 关键字时,如果目标用户存在,系统删除用户。如果目标用户不存在,系统报错,提示目标用户不存在。
name待删除的用户名。支持一次删除多个用户名。

语法示例

以下示例删除 user1 用户。

DROP USER user1;