跳到主要内容

创建用户

引入或更新版本:v1.2.566

创建一个 SQL 用户。

另请参阅:

语法

CREATE [ OR REPLACE ] USER <name> IDENTIFIED [ WITH <auth_type> ] BY '<password>' 
[ WITH MUST_CHANGE_PASSWORD = true | false ]
[ WITH SET PASSWORD POLICY = '<policy_name>' ] -- 设置密码策略
[ WITH SET NETWORK POLICY = '<policy_name>' ] -- 设置网络策略
[ WITH DEFAULT_ROLE = '<role_name>' ] -- 设置默认角色
[ WITH DISABLED = true | false ] -- 用户创建时处于禁用状态
  • auth_type 可以是 double_sha1_password(默认)、sha256_passwordno_password
  • MUST_CHANGE_PASSWORD 设置为 true 时,新用户必须在首次登录时更改密码。用户可以使用 ALTER USER 命令更改自己的密码。
  • 当你使用 CREATE USER 或 ALTER USER 为用户设置默认角色时,Databend 不会验证角色的存在性或自动将该角色授予用户。你必须显式地将角色授予用户,角色才会生效。
  • DISABLED 设置为 true 时,新用户将处于禁用状态。处于此状态的用户无法登录 Databend,直到他们被启用。要启用或禁用已创建的用户,请使用 ALTER USER 命令。

示例

示例 1:使用默认 auth_type 创建用户

CREATE USER user1 IDENTIFIED BY 'abc123';

SHOW USERS;
+-----------+----------+----------------------+---------------+
| name | hostname | auth_type | is_configured |
+-----------+----------+----------------------+---------------+
| user1 | % | double_sha1_password | NO |
+-----------+----------+----------------------+---------------+

示例 2:使用 sha256_password auth_type 创建用户

CREATE USER user1 IDENTIFIED WITH sha256_password BY 'abc123';

SHOW USERS;
+-----------+----------+----------------------+---------------+
| name | hostname | auth_type | is_configured |
+-----------+----------+----------------------+---------------+
| user1 | % | sha256_password | NO |
+-----------+----------+----------------------+---------------+

示例 3:使用网络策略创建用户

CREATE USER user1 IDENTIFIED BY 'abc123' WITH SET NETWORK POLICY='test_policy';

SHOW USERS;
+-----------+----------+----------------------+---------------+
| name | hostname | auth_type | is_configured |
+-----------+----------+----------------------+---------------+
| user1 | % | double_sha1_password | NO |
+-----------+----------+----------------------+---------------+

示例 4:使用默认角色创建用户

  1. 创建一个名为 'user1' 的用户,并将默认角色设置为 'manager':
以用户 "root" 连接:
SHOW ROLES;

┌───────────────────────────────────────────────────────────┐
│ name │ inherited_roles │ is_current │ is_default │
│ String │ UInt64 │ BooleanBoolean
├───────────────┼─────────────────┼────────────┼────────────┤
│ account_admin │ 0truetrue
│ developer │ 0falsefalse
public0falsefalse
└───────────────────────────────────────────────────────────┘

CREATE USER user1 IDENTIFIED BY 'abc123' WITH DEFAULT_ROLE = 'manager';

GRANT ROLE developer TO user1;
  1. 使用 SHOW ROLES 命令验证用户 "user1" 的默认角色:
以用户 "user1" 连接:
eric@Erics-iMac ~ % bendsql --user user1 --password abc123
Welcome to BendSQL 0.9.3-db6b232(2023-10-26T12:36:55.578667000Z).
Connecting to localhost:8000 as user user1.
Connected to DatabendQuery v1.2.271-nightly-0598a77b9c(rust-1.75.0-nightly-2023-12-26T11:29:04.266265000Z)

user1@localhost:8000/default> SHOW ROLES;

SHOW ROLES

┌───────────────────────────────────────────────────────┐
│ name │ inherited_roles │ is_current │ is_default │
│ String │ UInt64 │ BooleanBoolean
├───────────┼─────────────────┼────────────┼────────────┤
│ developer │ 0truetrue
public0falsefalse
└───────────────────────────────────────────────────────┘
2 rows read in 0.015 sec. Processed 0 rows, 0 B (0 rows/s, 0 B/s)

示例 5:创建处于禁用状态的用户

此示例创建一个名为 'u1' 的用户,该用户处于禁用状态,无法登录。使用 ALTER USER 命令启用用户后,登录访问权限将恢复。

  1. 创建一个名为 'u1' 的用户,并将其设置为禁用状态:
CREATE USER u1 IDENTIFIED BY '123' WITH DISABLED = TRUE;

SHOW USERS;

┌─────────────────────────────────────────────────────────────────────────────────────┐
│ name │ hostname │ auth_type │ is_configured │ default_role │ disabled │
├────────┼──────────┼──────────────────────┼───────────────┼───────────────┼──────────┤
│ root │ % │ no_password │ YES │ account_admin │ false
│ u1 │ % │ double_sha1_password │ NO │ │ true
└─────────────────────────────────────────────────────────────────────────────────────┘
  1. 尝试使用 BendSQL 以用户 'u1' 连接 Databend,结果出现身份验证错误:
➜  ~ bendsql --user u1 --password 123
Welcome to BendSQL 0.16.0-homebrew.
Connecting to localhost:8000 as user u1.
Error: APIError: RequestError: Start Query failed with status 401 Unauthorized: {"error":{"code":"401","message":"AuthenticateFailure: user u1 is disabled. Not allowed to login"}}
  1. 使用 ALTER USER 命令启用用户 'u1':
ALTER USER u1 WITH DISABLED = FALSE;
  1. 重新尝试以用户 'u1' 连接 Databend,确认登录访问成功:
➜  ~ bendsql --user u1 --password 123
Welcome to BendSQL 0.16.0-homebrew.
Connecting to localhost:8000 as user u1.
Connected to Databend Query v1.2.424-nightly-d3a89f708d(rust-1.77.0-nightly-2024-04-17T22:11:59.304509266Z)

示例 6:创建必须更改密码的用户

在此示例中,我们将创建一个带有 MUST_CHANGE_PASSWORD 选项的用户。然后,我们将使用 BendSQL 以新用户身份连接 Databend 并更改密码。

  1. 创建一个名为 'eric' 的新用户,并将 MUST_CHANGE_PASSWORD 选项设置为 TRUE
CREATE USER eric IDENTIFIED BY 'abc123' WITH MUST_CHANGE_PASSWORD = TRUE;
  1. 启动 BendSQL 并以新用户身份连接 Databend。连接后,你将看到一条消息,提示需要更改密码。
MacBook-Air:~ eric$ bendsql -ueric -pabc123
  1. 使用 ALTER USER 命令更改密码。
eric@localhost:8000/default> ALTER USER USER() IDENTIFIED BY 'abc456';
  1. 退出 BendSQL,然后使用新密码重新连接。
MacBook-Air:~ eric$ bendsql -ueric -pabc456
Welcome to BendSQL 0.19.2-1e338e1(2024-07-17T09:02:28.323121000Z).
Connecting to localhost:8000 as user eric.
Connected to Databend Query v1.2.567-nightly-78d41aedc7(rust-1.78.0-nightly-2024-07-14T22:10:13.777450105Z)

eric@localhost:8000/default>