创建用户
引入或更新版本: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
选项的用户。然后,我们将使用 BendSQL 以新用户身份连接 Databend 并更改密码。
- 创建一个名为 '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>