南大通用数仓-GCDW-学习-03-用户管理
目录
一、环境信息
名称 | 值 |
CPU | Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz |
操作系统 | CentOS Linux release 7.9.2009 (Core) |
内存 | 4G |
逻辑核数 | 4 |
GCDW版本 | 9.8.0.6.17 |
集群节点1IP | 192.168.142.10 |
二、概念
GCDW的账户管理系统由角色、用户、权限组成。
编号 | 描述 |
1 | 用户通过角色与权限进行关联。权限赋予角色,一个角色对应一组权限,用户通过成为角色的成员而得到这些角色的权限(用户自身不带权限属性)。 |
2 | 一个用户可以拥有若干角色,每一个角色拥有若干权限。用户选择自身拥有的某个角色创建会话,该会话中用户只具有这个选定角色的权限,不具有自身的其他角色权限。 |
3 | 角色有继承关系。父角色具有其所有子角色的权限,如果给某个角色赋予某项权限,则该角色的所有父角色同时具有该权限;相应的某个角色的权限被取消时,通过该角色得到的这项权限的父角色也会被取消这项权限。 |
4 | 用户以某个角色创建了数据库对象,该角色就是这个数据库对象的拥有者(OWNER)。该角色(OWNER)具有这个数据库对象的所有权限,即该角色的所有用户都具有这个数据库对象的所有操作权限,包括转赠这个数据库对象所有者的权限。 |
三、用户相关系统表
1、CLOUD.USER
(1)字段解释
序号 | 列名 | 描述 |
1 | user | 用户名 |
2 | password | 用户密码 |
3 | plugin | 插件 |
4 | auth_string | 用户认证方式 |
5 | create_time | 用户的创建时间 |
6 | last_login_time | 用户最近的访问时间 |
7 | grant_role | 用户被授予的角色 |
8 | switch_role | 用户可以切换的角色 |
9 | default_role | 用户的默认角色 |
10 | default_warehouse | 用户的默认 warehouse |
11 | uid | 用户 id |
12 | owner | 用户的拥有者(默认为创建者) |
13 | ssl_type | ssl(Secure Socket Layer)类型 |
14 | ssl_cipher | ssl 密码 |
15 | x509_issuer | ssl 加密证书颁发者 |
16 | x509_subject | ssl 加密证书的主体名称 |
17 | max_questions | 已知的用户最大并发查询数 |
18 | max_updates | 已知的用户最大并发 update 数 |
19 | max_connections | 已知的用户最大并发连接数 |
20 | max_user_connections | 支持的用户最大并发连接数 |
21 | max_cpus | 已知的用户最大 CPU 使用率(时间分片) |
22 | max_memories | 已知的用户最大内存使用空间 |
23 | max_tmp_space | 已知的用户最大临时空间使用容量 |
24 | resource_group | 用户的资源组 |
25 | task_priority | 用户的任务优先级 |
26 | user_limit_storage_size | 用户的空间容量使用限制 |
27 | user_storage_size | 当前用户使用的空间大小 |
28 | comment | 注释信息 |
(2)示例
gbase> SELECT * FROM CLOUD.USER WHERE USER = 'root' \G;
*************************** 1. row ***************************
user: root
password: *D75CC763C5551A420D28A227AC294FADE26A2FF2
plugin: gbase_native_password
auth_string:
create_time: NULL
last_login_time: NULL
grant_role: accountadmin
switch_role: accountadmin,systemadmin,publicadmin
default_role: accountadmin
default_warehouse:
uid: 4
owner: accountadmin
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
max_cpus: 0
max_memories: 0
max_tmp_space: 0
resource_group: 0
task_priority: 2
user_limit_storage_size:
user_storage_size: 0
comment:
1 row in set (Elapsed: 00:00:00.06)
ERROR:
No query specified
2、CLOUD.USER_CHECK
(1)字段解释
序号 | 列名 | 描述 |
1 | user | 用户名 |
2 | attempt | 登录密码错误重试限制的次数,超过次数用户被锁定 |
3 | last_attempt | 最近登录的重试次数 |
4 | locked | 用户是否被锁定 |
5 | password_expired | 密码当前是否过期 |
6 | password_last_changed | 最近一次更改密码的时间 |
7 | password_life_time | 密码的有效期管理策略,正整数表示还有多少天后必须更改密码 |
8 | password_history | 用户的历史密码 |
9 | login_time | 用户当前的登录时间 |
10 | last_login_time | 最近的用户登录时间 |
11 | login_count | 用户的登录次数 |
(2)示例
gbase> SELECT * FROM CLOUD.USER_CHECK WHERE USER = 'root'\G;
*************************** 1. row ***************************
user: root
attempt: 0
last_attempt: 0
locked: N
password_expired: N
password_last_changed: NULL
password_life_time: NULL
password_history: *D75CC763C5551A420D28A227AC294FADE26A2FF2
login_time: 2024-07-15 14:04:47
last_login_time: 2024-07-15 10:46:03
login_count: 6
1 row in set (Elapsed: 00:00:00.03)
ERROR:
No query specified
四、实操
1、新建用户
(1)语法
CREATE USER username [auth_option] [lock_option] [expiration_option] [default_role]
[default_warehouse] [comment];
参数 | 描述 |
username | 用户名 |
auth_option | 用户认证方式。可选参数。 identified by ’password’ [limit_storage_size=’’] limit_storage_size 是用户磁盘限额,在 sql 执行开始时进行检查用户当前磁盘使用是否超额,如果超额直接报错返回,执行过程中磁盘使用超额不检查不报错。参数值需为整数,单位可以是 K、M、G。如:limit_storage_size=1M |
lock _option | 是否锁定账户。可选参数。 |
expiration_option | 密码过期策略。控制密码的有效期,达到有效期后用户密码自动过期。 用户密码过期后,允许用户登录,在执行 SQL 时提示用户修改密码。 此时允许用户修改自己的密码。必须修改密码后才允许执行其它 SQL。 为可选参数。默认为永不过期。 password expire 立即过期 password expire never 永不过期 password expire interval N day 密码过期的时间间隔为 N 天。 即设置了密码后 N 天该密码过期,需要设置新的密码。 |
default_role | 默认角色,如不填写默认为系统角色 publicadmin。可选参数,建议填写。如,default_role=’role_name’。 |
default_warehouse | 用户默认关联的 warehouse。可选参数。如,default_warehouse=’warehouse name’ |
comment | 注释信息 |
(2)示例
gbase> CREATE USER ZXJ
-> IDENTIFIED BY 'qwer1234'
-> DEFAULT_WAREHOUSE='WH_CZG'
-> DEFAULT_ROLE='accountadmin'
-> COMMENT 'SUN';
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
gbase> CREATE USER LXG
-> IDENTIFIED BY 'qwer1234'
-> LIMIT_STORAGE_SIZE = 100G
-> ACCOUNT UNLOCK
-> PASSWORD EXPIRE NEVER
-> COMMENT 'SUN';
Query OK, 0 rows affected (Elapsed: 00:00:00.08)
我发现上面有些属性不能共用,可能是我用法的问题。
2、修改用户密码
(1)语法
SET PASSWORD [FOR user] = PASSWORD('newpassword');
(2)示例
gbase> SET PASSWORD FOR ZXJ = PASSWORD('haha');
Query OK, 0 rows affected (Elapsed: 00:00:00.09)
gbase> ALTER USER ZXJ IDENTIFIED BY 'qwer1234';
Query OK, 0 rows affected (Elapsed: 00:00:00.11)
3、设置用户默认角色
(1)语法
ALTER USER username DEFAULT_ROLE=’role_name’;
(2)示例
gbase> ALTER USER ZXJ DEFAULT_ROLE='systemadmin';
Query OK, 0 rows affected (Elapsed: 00:00:00.09)
4、设置用户默认 warehouse
设置用户默认的 warehouse 必须是当前已经存在的 warehouse。
设置用户默认 warehouse 不涉及用户的 warehouse 相关权限:
1.用户没有该 warehouse 的任何权限也可以将该 warehouse 设置为该用户的默认 warehouse。
2.设置用户默认 warehouse 成功后,不代表用户获取了该 warehouse 的使用权限, 用户需要另外被赋予该 warehouse 的相应权限才能正常使用该 warehouse。 修改用户的默认 warehouse 并不会引起已有 session 当前使用的 warehouse,但是会影 响新 session 做计算时选用的 warehouse.
(1)语法
ALTER USER username default_warehouse=’wh_name’;
(2)示例
gbase> ALTER USER ZXJ DEFAULT_WAREHOUSE='wh_czg';
Query OK, 0 rows affected (Elapsed: 00:00:00.07)
5、重命名用户
(1)语法
RENAME USER <oldusername> TO <newusername>;
(2)示例
gbase> RENAME USER ZXJ TO CLX;
Query OK, 0 rows affected (Elapsed: 00:00:00.05)
6、启用和禁用用户
(1)语法
ALTER USER <username> ACCOUNT LOCK | ACCOUNT UNLOCK;
(2)示例
gbase> ALTER USER CLX ACCOUNT LOCK;
Query OK, 0 rows affected (Elapsed: 00:00:00.05)
gbase> ALTER USER CLX ACCOUNT UNLOCK;
Query OK, 0 rows affected (Elapsed: 00:00:00.05)
7、用户切换角色
(1)语法
USE ROLE <rolename> ;
(2)示例
gbase> USE ROLE accountadmin;
Query OK, 0 rows affected (Elapsed: 00:00:00.00)
8、查看用户信息
(1)示例
gbase> SHOW USERS;
+-------+
| User |
+-------+
| root |
| gbase |
| CZG |
| CLX |
| LXG |
+-------+
5 rows in set (Elapsed: 00:00:00.09)
9、显示当前会话连接的用户名称
(1)示例
gbase> SELECT USER();
+----------------+
| USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (Elapsed: 00:00:00.00)
10、删除用户
(1)语法
DROP USER <username>;
(2)示例
gbase> DROP USER CLX;
Query OK, 0 rows affected (Elapsed: 00:00:00.17)
11、查看当前用户拥有的权限
(1)语法
show grants;
(2)示例
gbase> show grants;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for role_exam@% |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT CREATE, RELOAD, PROCESS, SHOW DATABASES, OPERATE_WAREHOUSE, CREATE_FILE_FORMAT, CREATE_STAGE, STAGE_READ, STAGE_WRITE, FILE_FORMAT_USAGE ON *.*.* TO ROLE 'role_exam'@'%' |
| GRANT ALL PRIVILEGES ON "vc00001"."ssbm".* TO ROLE 'role_exam'@'%' |
| GRANT "publicadmin" TO ROLE "role_exam" |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
3 rows in set (Elapsed: 00:00:00.01)
原文地址:https://blog.csdn.net/qq_45111959/article/details/140440526
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!