跳到主要内容

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_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 选项的用户

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

  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>