Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了oracle数据库权限之一——概念大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Oracle系统权限和角色权限都对用户的权限作了相应的限制,这也在一定程度上保护了数据库的访问安全。下面就让我们来一起了解一下。

Oracle系统权限

Oracle系统权限需要授予者有进行系统级活动的能力,如连接数据库,更改用户会话、建立表或建立用户等等。你可以在数据字典视图SYstem_PRIVILEGE_MAP上获得完整的系统权限。

对象权限

某一个用户可对其中的对象,直接授权给其它用户。

需注意的是,当某一个用户userA拥有查询其它用户userB下某个表tableA的视图vIEwA时,如userA用户需将vIEwA的查询权限授予userC,则必须同时将userB用户下tableA表的查询权限授予userC用户才可以。

对象权限和Oracle系统权限都通过GRANT语句授予用户或角色。需要注意的是在授予对象权限时语句应该是WITH GRANT OPTION子句,但在授予系统权象时语句是WITH admin OPTION,所以在你试图授予系统权限时,使用语句WITH GRANT OPTION系统会报告一个错误:ONLY admin OPTION can be specifIEd。要特别注意这个语法和错误信息。

角色和角色权限

角色权限就是将属于用户的权限授予一个角色。任何权限都可以授予给一个角色。同时,一个角色可以授予另一个角色,但不能授予自己,也不能循环授权。

在会话期间通过SET RolE语句授予或撤销角色权限。

在PL/sql块中使用角色时,需要视其是否为匿名块、定义者权限还是调用者权限来决定。

1)在命名PL/sql块(存储过程、函数、触发器)按照定义者权限进行执行时,所有角色都会失效。执行过程中查询SESSION_RolES视图不会返回结果。

2)在命名PL/sql块(存储过程、函数、触发器)按照调用者权限进行执行时,以及执行匿名PL/sql块时,可以使用角色进行权限检查,也可以在块中使用动态sql设置相应的角色(SET RolE语句)。

授予和撤销权限

给用户或者角色授予权限使用GRANT 语句,GRANT语句的语法如下:

GRANT RolE(或system privilege) TO user(role,Public) WITH admin OPTION(可选)

对象权限被授予 WITH GRANT OPTION

涉及到权限的数据字典表主要有:

1、SYstem_PRIVILEGE_MAP

系统中所有的系统权限列表。

2、DBA_RolES

系统中所有的角色列表。

3、数据库级权限列表

DBA_SYS_PRIVS

哪些用户或角色拥有哪些系统权限。

DBA_RolE_PRIVS

哪些用户或角色拥有哪些角色。

DBA_TAB_PRIVS

哪些用户或角色拥有哪些对象的什么具体权限,对象包括表、视图、过程、函数、包、类型等。

DBA_Col_PRIVS

哪些用户或角色拥有哪些表的哪些列的什么权限,这些权限主要包括UPDATE、REFERENCES。

4、用户级权限列表

USER_SYS_PRIVS

当前用户拥有的系统权限。

USER_RolE_PRIVS

当前用户拥有的角色权限。

USER_TAB_PRIVS

作为对象的拥有者、对象权限的授予者、对象权限的被授予者,当前用户涉及到的相关对象权限。

USER_TAB_PRIVS_MADE

作为对象的拥有者,当前用户涉及到的相关对象权限。

USER_TAB_PRIVS_RECD

作为对象权限的被授予者,当前用户涉及到的相关对象权限。

USER_Col_PRIVS

作为列对象的拥有者、列对象权限的授予者、列对象权限的被授予者,当前用户涉及到的相关列对象权限。

USER_Col_PRIVS_MADE

作为列对象的拥有者,当前用户涉及到的相关列对象权限。

USER_Col_PRIVS_RECD

作为列对象权限的被授予者,当前用户涉及到的相关列对象权限。

5、ALL级权限列表

ALL_TAB_PRIVS

1)作为对象的拥有者、对象权限的授予者、对象权限的被授予者,当前用户涉及到的相关对象权限。

2)当前用户的所属角色(包括PUBliC角色)所拥有的对象权限。

ALL_TAB_PRIVS_MADE

作为对象的拥有者、对象权限的授予者,当前用户涉及到的相关对象权限。

ALL_TAB_PRIVS_RECD

1)作为对象权限的被授予者,当前用户涉及到的相关对象权限。

2)当前用户的所属角色(包括PUBliC角色)所拥有的对象权限。

ALL_Col_PRIVS

1)作为列对象的拥有者、列对象权限的授予者、列对象权限的被授予者,当前用户涉及到的相关列对象权限。

2)当前用户的所属角色(包括PUBliC角色)所拥有的列对象权限。

ALL_Col_PRIVS_MADE

作为列对象的拥有者、列对象权限的授予者,当前用户涉及到的相关列对象权限。

ALL_Col_PRIVS_RECD

1)作为列对象权限的被授予者,当前用户涉及到的相关列对象权限。

2)当前用户的所属角色(包括PUBliC角色)所拥有的列对象权限。

6、角色级权限列表

RolE_RolE_PRIVS

当前用户下,哪些角色被授予了哪些角色。

RolE_SYS_PRIVS

当前用户下,哪些角色被授予了哪些系统权限。

RolE_TAB_PRIVS

当前用户下,哪些角色被授予了哪些对象权限。

7、会话级权限列表

SESSION_PRIVS

当前用户所拥有的系统权限。

SESSION_RolES

当前用户所拥有的角色。

大佬总结

以上是大佬教程为你收集整理的oracle数据库权限之一——概念全部内容,希望文章能够帮你解决oracle数据库权限之一——概念所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: