梳理一下对oracle权限的理解:
oracle 权限分为:
1,system privilege ,系统权限是系统规定用户使用数据库的权限
2,object privilege ,对象权限是oracle用户可以访问其他用户对象的权限,主要针对表和视图而言。
一、 系统权限
系统权限最初最能有sys、system授出。
1,系统权限的传递:
添加WITH ADMIN OPTION选项,则可以实现系统权限的传递。如:A用户使用了一下赋权语句:
SQL> grant connect to B with admin option;
则B用户可以把自己得到的connect权限赋予其他的用户。
2,系统权限的回收。
系统权限的回收只能由拥有DBA权限的用户执行。使用revoke 即可。如:
SQL>revoke connect from B.
这样就撤销了用户B的connect权限
3,使用with admin option可以实现系统权限的传递性,但撤销的时候,没有传递性。如:A使用了with admin option选项,把系统权限connect赋予了B,B就可以把自己得到的这个connect权限赋予C。这是赋权的传递性。但在A撤销了B用户的connect权限后,C用户依然有connect的权限。如果A想撤销C的connect的权限,可以直接使用revoke撤销。
二、对象权限
1,对象权限的分类:
select, update, insert, alter, index, delete, all (all包括上述的所有权限);
execute //执行存储过程权限
2,对象权限的传递
添加with grant option选项即可实现。这和系统权限的传递一样。
3,对象权限的回收
注意,对象权限的回收和系统权限的回收有点不一样。系统权限的回收没有传递性,而对象权限的回收有传递性。如果A使用with grant option把对象权限赋予了B,B可以把自己得到的对象权限赋予其他用户,如用户C。A在撤销B的对象权限的同时,也撤销了用户C的对象权限。