DCL语句是对数据访问进行控制的指令,由GRANT和REVOKE两个指令组成。
一、用户USER
- 创建用户
create user admin identified by ‘admin’;
- 修改用户名
rename user admin to new_user;
- 修改密码
set password for new_user=password(‘newadmin’);
- 删除用户
drop user new_user;
二、用户组ROLE
- 创建用户组ROLE
create role role1,role2;
- 删除用户组ROLE
drop role role1;
三、权限管理(GRANT、REVOKE)
- 为用户赋权
grant select on db1.t1 to user1;
- 收回用户权限
revoke select on db1.t1 from user1;
- 为用户组ROLE赋权
grant all on db2.* to role1;
- 回收用户组ROLE权限
revoke all on db2.* from role1;
- 将用户组ROLE权限赋予用户
grant role1 to user1 [with admin option];
- 向用户回收用户组ROLE权限
revoke role1 from user1;
四、权限级别(单VC或默认VC下)
- 全局 *.* ——服务器有效
grant all on *.* to user;
- 数据库级db.* ——数据库索引对象有效
grant select,insert,update,delete on db_name.* to user;
- 表级db.table.* ——表中所有列有效
grant all on db_name.tbl_name to user;
- 列级 ——表中指定列有效
grant insert(column_list) on db_name.table_name to user;
- 过程级 ——存储过程有效
grant create routine on db_name.* to user;
- 加载或导出数据需要有FILE权限
grant FILE on *.* to role1;
- 为用户赋予优先级权限
注:priority_value的取值范围为0~3,数字越大优先级越高,缺省为0。
grant usage on *.* to user_name with task_priority priority_vale;
- 查看用户或用户组权限
show grants for user/role;
- 查看用户和组的关联信息
select * from gbase.role_edges;
五、多VC下用户权限管理
- 为用户设置默认VC(建议每个用户都设置默认VC)
set default_vc for user=vc_name;
- 切换当前VC语法
USE VC VC_NAME;
- 把访问多VC的库/表/列…授权给USER
GRANT ALL ON *.*.* TO USER1;
GRANT ALL ON VC2.DB.* TO USER1;
GRANT ALL ON VC2.DB.TABLE TO USER1;
- 把USER在多VC下的库/表/列…权限收回。
REVOKE ALL ON VC2.*.* FROM USER1;
REVOKE ALL ON VC2.DB.* FROM USER1;
REVOKE ALL ON VC2.DB.TABLE FROM USER1;