@@ -4,194 +4,103 @@ sidebar_position: 1
44---
55import FunctionDescription from '@site/src /components/FunctionDescription';
66
7- <FunctionDescription description =" 引入或更新于: v1.2.703 " />
7+ <FunctionDescription description =" 引入或更新于: v1.2.703 " />
88
9- 创建 SQL 用户。
9+ 创建用于连接 Databend 的 SQL 用户。用户必须被授予适当权限,才能访问数据库并执行操作 。
1010
11- 另请参阅:
12-
13- - [ CREATE PASSWORD POLICY] ( ../12-password-policy/create-password-policy.md )
14- - [ CREATE NETWORK POLICY] ( ../12-network-policy/ddl-create-policy.md )
15- - [ GRANT] ( 10-grant.md )
11+ 另请参阅:
12+ - [ GRANT] ( 10-grant.md )
13+ - [ ALTER USER] ( 03-user-alter-user.md )
14+ - [ DROP USER] ( 02-user-drop-user.md )
1615
1716## 语法
1817
1918``` sql
2019CREATE [ OR REPLACE ] USER < name> IDENTIFIED [ WITH < auth_type> ] BY ' <password>'
2120[ WITH MUST_CHANGE_PASSWORD = true | false ]
22- [ WITH SET PASSWORD POLICY = ' <policy_name>' ] -- 设置密码策略
23- [ WITH SET NETWORK POLICY = ' <policy_name>' ] -- 设置网络策略
24- [ WITH SET WORKLOAD GROUP = ' <workload_group_name>' ] -- 设置工作负载组
25- [ WITH DEFAULT_ROLE = ' <role_name>' ] -- 设置默认角色
26- [ WITH DISABLED = true | false ] -- 用户创建时处于禁用状态
21+ [ WITH SET PASSWORD POLICY = ' <policy_name>' ]
22+ [ WITH SET NETWORK POLICY = ' <policy_name>' ]
23+ [ WITH DEFAULT_ROLE = ' <role_name>' ]
24+ [ WITH DISABLED = true | false ]
2725```
2826
29- - ` <name> ` 不能包含以下非法字符:
30- - 单引号 (')
31- - 双引号 (")
32- - 退格符 (\b)
33- - 换页符 (\f)
34- - * auth_type* 可以是 ` double_sha1_password ` (默认)、` sha256_password ` 或 ` no_password ` 。
35- - 当 ` MUST_CHANGE_PASSWORD ` 设置为 ` true ` 时,新用户必须在首次登录时更改密码。用户可以使用 [ ALTER USER] ( 03-user-alter-user.md ) 命令更改自己的密码。
36- - 当您使用 CREATE USER 或 [ ALTER USER] ( 03-user-alter-user.md ) 为用户设置默认角色时,Databend 不会验证角色是否存在,也不会自动将角色授予用户。您必须显式地将角色授予用户,角色才能生效。
37- - 当 ` DISABLED ` 设置为 ` true ` 时,新用户将以禁用状态创建。处于此状态的用户无法登录 Databend,直到被启用。要启用或禁用已创建的用户,请使用 [ ALTER USER] ( 03-user-alter-user.md ) 命令。
27+ ** 参数:**
28+ - ` <name> ` :用户名(不能包含单引号、双引号、退格符或换页符)
29+ - ` <auth_type> ` :认证类型 - ` double_sha1_password ` (默认)、` sha256_password ` 或 ` no_password `
30+ - ` MUST_CHANGE_PASSWORD ` :为 ` true ` 时,用户首次登录必须修改密码
31+ - ` DEFAULT_ROLE ` :设置默认角色(必须先显式授予该角色才能生效)
32+ - ` DISABLED ` :为 ` true ` 时,用户创建后即被禁用,无法登录
3833
3934## 示例
4035
41- ### 示例 1: 使用默认 auth_type 创建用户
42-
43- ``` sql
44- CREATE USER user1 IDENTIFIED BY ' abc123' ;
45-
46- SHOW USERS;
47- + -- ---------+----------+----------------------+---------------+
48- | name | hostname | auth_type | is_configured |
49- + -- ---------+----------+----------------------+---------------+
50- | user1 | % | double_sha1_password | NO |
51- + -- ---------+----------+----------------------+---------------+
52- ```
53-
54- ### 示例 2: 使用 sha256_password auth_type 创建用户
55-
56- ``` sql
57- CREATE USER user1 IDENTIFIED WITH sha256_password BY ' abc123' ;
58-
59- SHOW USERS;
60- + -- ---------+----------+----------------------+---------------+
61- | name | hostname | auth_type | is_configured |
62- + -- ---------+----------+----------------------+---------------+
63- | user1 | % | sha256_password | NO |
64- + -- ---------+----------+----------------------+---------------+
65- ```
36+ ### 示例 1:创建用户并授予数据库权限
6637
67- ### 示例 3: 创建带有网络策略的用户
38+ 创建用户并授予数据库权限:
6839
6940``` sql
70- CREATE USER user1 IDENTIFIED BY ' abc123' WITH SET NETWORK POLICY= ' test_policy' ;
71-
72- SHOW USERS;
73- + -- ---------+----------+----------------------+---------------+
74- | name | hostname | auth_type | is_configured |
75- + -- ---------+----------+----------------------+---------------+
76- | user1 | % | double_sha1_password | NO |
77- + -- ---------+----------+----------------------+---------------+
78- ```
79-
80- ### 示例 4: 创建带有默认角色的用户
81-
82- 1 . 创建名为 'user1' 的用户,默认角色设置为 'manager':
83-
84- ``` sql title='以用户 "root" 身份连接:'
85- SHOW ROLES;
86-
87- ┌───────────────────────────────────────────────────────────┐
88- │ name │ inherited_roles │ is_current │ is_default │
89- │ String │ UInt64 │ Boolean │ Boolean │
90- ├───────────────┼─────────────────┼────────────┼────────────┤
91- │ account_admin │ 0 │ true │ true │
92- │ developer │ 0 │ false │ false │
93- │ public │ 0 │ false │ false │
94- └───────────────────────────────────────────────────────────┘
41+ -- 创建新用户
42+ CREATE USER data_analyst IDENTIFIED BY ' secure_password123' ;
9543
96- CREATE USER user1 IDENTIFIED BY ' abc123' WITH DEFAULT_ROLE = ' manager' ;
97-
98- GRANT ROLE developer TO user1;
44+ -- 授予数据库权限
45+ GRANT SELECT , INSERT ON default.* TO data_analyst;
9946```
10047
101- 2 . 使用 [ SHOW ROLES] ( 04-user-show-roles.md ) 命令验证用户 "user1" 的默认角色:
102-
103- ``` sql title='以用户 "user1" 身份连接:'
104- eric@Erics- iMac ~ % bendsql -- user user1 --password abc123
105- Welcome to BendSQL 0 .9 .3 - db6b232(2023 - 10 - 26T12:36 :55 .578667000Z).
106- Connecting to localhost:8000 as user user1.
107- Connected to DatabendQuery v1 .2 .271 - nightly- 0598a77b9c(rust- 1 .75 .0 - nightly- 2023 - 12 - 26T11:29 :04 .266265000Z)
108-
109- user1@localhost:8000 / default> SHOW ROLES;
110-
111- SHOW ROLES
112-
113- ┌───────────────────────────────────────────────────────┐
114- │ name │ inherited_roles │ is_current │ is_default │
115- │ String │ UInt64 │ Boolean │ Boolean │
116- ├───────────┼─────────────────┼────────────┼────────────┤
117- │ developer │ 0 │ true │ true │
118- │ public │ 0 │ false │ false │
119- └───────────────────────────────────────────────────────┘
120- 2 rows read in 0 .015 sec. Processed 0 rows, 0 B (0 rows/ s, 0 B/ s)
121- ```
122-
123- ### 示例 5: 创建处于禁用状态的用户
124-
125- 此示例创建名为 'u1' 的用户,该用户处于禁用状态,无法登录。使用 [ ALTER USER] ( 03-user-alter-user.md ) 命令启用用户后,登录访问权限将恢复。
126-
127- 1 . 创建处于禁用状态的用户 'u1':
128-
48+ 验证用户及权限:
12949``` sql
130- CREATE USER u1 IDENTIFIED BY ' 123' WITH DISABLED = TRUE;
131-
132- SHOW USERS;
133-
134- ┌─────────────────────────────────────────────────────────────────────────────────────┐
135- │ name │ hostname │ auth_type │ is_configured │ default_role │ disabled │
136- ├────────┼──────────┼──────────────────────┼───────────────┼───────────────┼──────────┤
137- │ root │ % │ no_password │ YES │ account_admin │ false │
138- │ u1 │ % │ double_sha1_password │ NO │ │ true │
139- └─────────────────────────────────────────────────────────────────────────────────────┘
50+ SHOW GRANTS FOR data_analyst;
51+ + -- -------------------------------------------------+
52+ | Grants |
53+ + -- -------------------------------------------------+
54+ | GRANT SELECT ,INSERT ON ' default' .* TO ' data_analyst' @' %' |
55+ + -- -------------------------------------------------+
14056```
14157
142- 2 . 尝试使用 BendSQL 以用户 'u1' 连接到 Databend,结果出现身份验证错误:
58+ ### 示例 2:创建用户并授予角色
14359
144- ``` shell
145- ➜ ~ bendsql --user u1 --password 123
146- Welcome to BendSQL 0.16.0-homebrew.
147- Connecting to localhost:8000 as user u1.
148- Error: APIError: RequestError: Start Query failed with status 401 Unauthorized: {" error" :{" code" :" 401" ," message" :" AuthenticateFailure: user u1 is disabled. Not allowed to login" }}
149- ```
150-
151- 3 . 使用 [ ALTER USER] ( 03-user-alter-user.md ) 命令启用用户 'u1':
60+ 创建用户并分配具有特定权限的角色:
15261
15362``` sql
154- ALTER USER u1 WITH DISABLED = FALSE;
63+ -- 创建角色并授予权限
64+ CREATE ROLE analyst_role;
65+ GRANT SELECT ON * .* TO ROLE analyst_role;
66+ GRANT INSERT ON default.* TO ROLE analyst_role;
67+
68+ -- 创建用户并授予角色
69+ CREATE USER john_analyst IDENTIFIED BY ' secure_pass456' ;
70+ GRANT ROLE analyst_role TO john_analyst;
15571```
15672
157- 4 . 重新尝试以用户 'u1' 连接到 Databend,确认登录访问成功:
158-
159- ``` shell
160- ➜ ~ bendsql --user u1 --password 123
161- Welcome to BendSQL 0.16.0-homebrew.
162- Connecting to localhost:8000 as user u1.
163- Connected to Databend Query v1.2.424-nightly-d3a89f708d(rust-1.77.0-nightly-2024-04-17T22:11:59.304509266Z)
73+ 验证角色分配:
74+ ``` sql
75+ SHOW GRANTS FOR john_analyst;
76+ + -- ----------------------------------------+
77+ | Grants |
78+ + -- ----------------------------------------+
79+ | GRANT SELECT ON * .* TO ' analyst_role' |
80+ | GRANT INSERT ON ' default' .* TO ' analyst_role' |
81+ + -- ----------------------------------------+
16482```
16583
166- ### 示例 6:创建带有 MUST_CHANGE_PASSWORD 的用户
167-
168- 在此示例中,我们将创建一个带有 ` MUST_CHANGE_PASSWORD ` 选项的用户。然后,我们将使用 BendSQL 以新用户身份连接到 Databend 并更改密码。
169-
170- 1 . 创建一个名为 'eric' 的新用户,并将 ` MUST_CHANGE_PASSWORD ` 选项设置为 ` TRUE ` 。
84+ ### 示例 3:创建不同认证类型的用户
17185
17286``` sql
173- CREATE USER eric IDENTIFIED BY ' abc123' WITH MUST_CHANGE_PASSWORD = TRUE;
174- ```
175-
176- 2 . 启动 BendSQL 并以新用户身份连接到 Databend。连接后,您将看到一条消息,指示需要更改密码。
87+ -- 使用默认认证创建用户
88+ CREATE USER user1 IDENTIFIED BY ' abc123' ;
17789
178- ``` bash
179- MacBook-Air: ~ eric$ bendsql -ueric -pabc123
90+ -- 使用 SHA256 认证创建用户
91+ CREATE USER user2 IDENTIFIED WITH sha256_password BY ' abc123 ' ;
18092```
18193
182- 3 . 使用 [ ALTER USER] ( 03-user-alter-user.md ) 命令更改密码。
183-
184- ``` bash
185- eric@localhost:8000/default> ALTER USER USER () IDENTIFIED BY ' abc456' ;
186- ```
94+ ### 示例 4:创建具有特殊配置的用户
18795
188- 4 . 退出 BendSQL,然后使用新密码重新连接。
96+ ``` sql
97+ -- 创建需修改密码的用户
98+ CREATE USER new_employee IDENTIFIED BY ' temp123' WITH MUST_CHANGE_PASSWORD = true;
18999
190- ``` bash
191- MacBook-Air:~ eric$ bendsql -ueric -pabc456
192- Welcome to BendSQL 0.19.2-1e338e1(2024-07-17T09:02:28.323121000Z).
193- Connecting to localhost:8000 as user eric.
194- Connected to Databend Query v1.2.567-nightly-78d41aedc7(rust-1.78.0-nightly-2024-07-14T22:10:13.777450105Z)
100+ -- 创建禁用状态的用户
101+ CREATE USER temp_user IDENTIFIED BY ' abc123' WITH DISABLED = true;
195102
196- eric@localhost:8000/default>
103+ -- 创建带默认角色的用户(需单独授予角色)
104+ CREATE USER manager IDENTIFIED BY ' abc123' WITH DEFAULT_ROLE = ' admin' ;
105+ GRANT ROLE admin TO manager;
197106```
0 commit comments