上一篇分享了dm数据库用户的管理,这篇文章介绍dm权限管理,可以让大家熟悉dm一些相关权限视图,如何授予以及回收权限。
dm数据库权限相关视图与oracle视图兼容,常用的有以下几个视图:
DBA_SYS_PRIVS
显示系统中所有传授给用户或者角色的权限。
USER_SYS_PRIVS
传授给当前用户的系统权限。
DBA_ROLE_PRIVS
显示系统中的授予用户的所有角色。
USER_ROLE_PRIVS
显示传授给当前用户的角色。
DBA_ROLES
显示系统中所有的角色。
DBA_TAB_PRIVS
显示系统中所有用户的数据库对象权限信息。
USER_TAB_PRIVS
显示当前用户作为对象拥有者、授权者或被授权者的数据库对象权限。结构同DBA_TAB_PRIVS。
用户系统权限授权语法:
GRANT <特权> TO <用户或角色>{,<用户或角色>} [WITH ADMIN OPTION];
<特权> ::= <数据库权限>{,<数据库权限>}; |
用户对象权限授权语法:
GRANT <特权> ON [<对象类型>] <对象> TO <用户或角色>{,<用户或角色>} [WITH GRANT OPTION]; <特权>::= ALL [PRIVILEGES] | <动作> {, <动作>} <动作>::= SELECT[(<列清单>)] | INSERT[(<列清单>)] | UPDATE[(<列清单>)] | DELETE | REFERENCES[(<列清单>)] | EXECUTE| READ| WRITE| USAGE <列清单>::= <列名> {,<列名>} <对象类型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE | DIRECTORY | DOMAIN <对象> ::= [<模式名>.]<对象名> <对象名> ::= <表名> | <视图名> | <存储过程/函数名> |<包名> |<类名> |<类型名> |<序列名> | <目录名> | <域名> <用户或角色>::= <用户名> | <角色名> |
以下举例子介绍用户权限的授予和回收。
创建用户LJW、TEST、TEST2:
create user ljw identified by dameng123; create user test identified by dameng123; create user test2 identified by dameng123; |
给LJW用户授予DBA权限:
grant dba to ljw; |
在ljw用户下创建表ll:
create table ll (id number); |
ljw用户将表ljw.ll查询权限授予test
grant select on ll to test with grant option; |
ljw用户将创建用户权限授予test
grant CREATE USER to test; |
test用户将表ljw.ll的查询权限授予test2
grant select on ljw.ll to test2; |
以上简单的用户授权操作,大家是否有相关疑问呢?
怎么获取数据库所有的数据库系统权限?比如:create user
哪些权限是可传递授权的?如:ljw把create user权限授予test,test能否把create user权限授予test2?
获取dm数据库所有系统权限可以通过dba_sys_privs视图获取。
如:(注:截图中只是一部分)
权限是否传递可以查看dba_sys_privs. ADMIN_OPTION,如:
注:YES:表示可传授、NO:表示不可传授。
查看select on ljw.ll 是否可传递:
注:YES:表示可传授、NO:表示不可传授
查看LJW用户所拥有的所有角色权限:
select * from dba_role_privs where grantee='LJW'; |
单独授予的权限可以通过dba_sys_privs查询,如:
note:
系统权限 可以使用参数with admin option传递权限
对象权限 可以使用参数with grant option 传递权限
系统权限回收语法:
REVOKE [ADMIN OPTION FOR]<特权> FROM <用户或角色>{,<用户或角色>} ; <特权> ::= <数据库权限>{,<数据库权限>} |
对象权限回收语法:
REVOKE [GRANT OPTION FOR] <特权> ON [<对象类型>]<对象> FROM <用户或角色> {,<用户或 角色>} [<回收选项>]; |
如:
SQL> revoke select on ll from test cascade; |
note:用户 A 给用户 B 授权且允许其转授,B 将权限转授给 C。当 A 回收 B 的权限的时候必须加 CASCADE 回收选项。
更多详看《dm7安全管理手册》