CREATE USER
Introduced or updated: 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_password
或no_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: 创建带有默认角色的用户
- 创建一个名为 'user1' 的用户,并将其默认角色设置为 'manager':
以 "root" 用户连接:
SHOW ROLES;
┌───────────────────────────────────────────────────────────┐
│ name │ inherited_roles │ is_current │ is_default │
│ String │ UInt64 │ Boolean │ Boolean │
├───────────────┼─────────────────┼────────────┼────────────┤
│ account_admin │ 0 │ true │ true │
│ developer │ 0 │ false │ false │
│ public │ 0 │ false │ false │
└────────────────── ─────────────────────────────────────────┘
CREATE USER user1 IDENTIFIED BY 'abc123' WITH DEFAULT_ROLE = 'manager';
GRANT ROLE developer TO user1;
- 使用 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 │ Boolean │ Boolean │
├───────────┼─────────────────┼────────────┼────────────┤
│ developer │ 0 │ true │ true │
│ public │ 0 │ false │ false │
└───────────────────────────────────────────────────────┘
2 rows read in 0.015 sec. Processed 0 rows, 0 B (0 rows/s, 0 B/s)
示例 5: 创建处于禁用状态的用户
此示例创建一个名为 'u1' 的用户,并将其置于禁用状态,阻止登录访问。使用 ALTER USER 命令启用用户后,登录访问恢复。
- 创建一个名为 '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 │
└─────────────────────────────────────────────────────────────────────────────────────┘
- 尝试使用 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"}}
- 使用 ALTER USER 命令启用用户 'u1':
ALTER USER u1 WITH DISABLED = FALSE;
- 重新尝试以用户 '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 选项的用户
在此示例中,我们将创建一个带有 MUST_CHANGE_PASSWORD
选项的用户。然后,我们将以新用户身份连接到 Databend,并使用 BendSQL 更改密码。
- 创建一个名为 'eric' 的新用户,并将
MUST_CHANGE_PASSWORD
选项设置为TRUE
。
CREATE USER eric IDENTIFIED BY 'abc123' WITH MUST_CHANGE_PASSWORD = TRUE;
- 启动 BendSQL 并以新用户身份连接到 Databend。连接后,您将看到一条消息,指示需要更改密码。
MacBook-Air:~ eric$ bendsql -ueric -pabc123
- 使用 ALTER USER 命令更改密码。
eric@localhost:8000/default> ALTER USER USER() IDENTIFIED BY 'abc456';
- 退出 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>