前言
GBase 8a的权限管理是其数据库系统中的一个关键组成部分,它确保了数据库的安全性和稳定性,同时允许管理员根据实际需求,精确地控制不同用户对数据库资源的访问和操作。
首先,权限管理的重要性在于它可以帮助管理员规划不同数据库用户的职责,并为他们分配适当的操作权限。这样做可以避免未经授权的访问和操作,减少数据泄露和损坏的风险。
在GBase 8a中,权限管理涉及多个层面,包括全局级、过程级、数据库级、列级和表级等。每个层面的权限都有其特定的作用域和限制,管理员可以根据需要为用户分配不同层面的权限。
一、grant和revoke语法介绍
GRANT priv_type1,priv_type2... ON priv_level to username/rolename;
REVOKE priv_type1,priv_type2...ON priv_level from username/rolename;
priv_type:权限类型
priv_level:权限级别
二、权限类型和级别
1、权限级别:gbase8a支持全局级,vc级,库级,表级,列级;
数据库权限分为:数据库操作类权限、数据操作类权限、存储过程和自定义函数执行权限、数据查看类权限、数据库管理类权限(包括了用户管理)。
2、权限类型:gbase8a支持的权限类型如下表所示:
|
权限 |
意义 |
|
ALL |
设置除REVOKE OPTION之外的所有简单的权限 |
|
select |
允许查看表数据 |
|
insert |
允许插入表数据 |
|
update |
允许修改表数据 |
|
delete |
允许修改表行数据 |
|
create |
允许创建库表 |
|
drop |
允许删除库/表/视图,包括truncate |
|
alter |
允许修改表结构(create,drop) |
|
index |
允许创建和删除索引 |
|
reload |
允许执行flush |
|
Create temporary tables |
允许创建临时表 |
|
Lock tables |
允许对拥有select权限的表锁定 |
|
Revoke option |
管理权限的权限 |
|
process |
允许查看实例进程信息 |
|
super |
允许进行一系列的数据库管理的命令,包括kill和set 命令 |
|
Show databases |
显示数据库 |
|
Create view |
创建视图 |
|
Show view |
允许查看创建的视图 |
|
unmask |
允许不受数据脱敏限制 |
|
Create routine |
允许创建存储过程/函数 |
|
Alter routine |
允许修改或删除存储过程/函数 |
|
execute |
允执行存储过程/函数 |
|
Create user |
创建/修改/删除/重命名user和user |
|
event |
查看/创建/修改/删除事件 |
|
trigger |
查看/创建/修改/删除触发事件 |
|
FiLE |
允许使用导出和加载数据 |
|
Shutdown |
允许使用gbaseadmin shutdown |
|
usage |
用于连接登录数据库 |
三、给用户授予权限
grant all on *.*.* to user user1;
grant create,select,insert,alter on *.*.* to user2; #全局级
grant create,select,execute,create routine on vc1.*.* to user3; #集群带vc
grant create,select,delete,insert,drop on test.* to user4; #库级
grant create,select,create view,show view,insert,drop on vc1.test.t1 to user5; #表级
grant select,update(a),insert(i) on vc1.test.t1 to user6; #列级 四、回收用户权限
回收用户权限示例:
revoke all on *.*.* from user user1;
revoke create,select,insert,alter on *.*.* from user2; #全局级
revoke create,select,execute,create routine on vc1.*.* from user3; #vc级
revoke create,select,delete,insert,drop on test.* from user4; #库级
revoke create,select,create view,show view,insert,drop on vc1.test.t1 from user5; #表级
revoke select,update(a),insert(i) on vc1.test.t1 from user6;#列级 五、给用户组授予权限
用户组:设置用户归属的用户组,用户组的权限会影响到该用户组的权限鉴定。即用户拥有用户组被授予的权限。
前提:创建用户组,设置用户归属的用户组,sql执行如下:
create role role1;
grant user1 to role1;
grant role1 to user1;
grant select on *.*.* to role1;
show grants for user1;

六、回收用户组权限
回收用户组权限示例:
revoke select on *.*.* from role1;



