管理权限和角色2-对象权限

1.对象权限介绍
指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。


比如smith用户要访问scott.emp表(scott:方案,emp:表)
则必须在scott.emp表上具有对象的权限


常用的有:
alter 修改  delete 删除  select  查询  insert 添加
update 修改  index 索引  references 引用  execute 执行

2.显示对象权限
通过数据字段视图可以显示用户或是角色所具有的对象权限。
视图为 dba_tab_privs

SQL> conn system/Mayu2638;
已连接。

SQL> select distinct privilege from dba_tab_privs;

SQL> select grantor,owner,table_name,privilege from dba_tab_privs where grantee='用户名/角色名';

3.授权对象权限
在oracle9i前,授予对象权限是由对象的所有者来完成的,如果用其它的用户来操作,则需要用户具有相应的(with grant option)权限,从oracle9i开始,dba用户(sys,system)可以将任何对象上的对象权限授予其它用户,授予对象权限是用grant命令来完成的。


对象权限可以授予用户、角色和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授给其它用户,但是要注意with grant option选项不能被授予角色

1)monkey用户要操作scott.emp表,则必须授予相应的对象权限
1.通过scott用户来授权
2.通过sys用户来授权
3.通过system用户来授权

1。希望monkey可以查询scott.emp的表数据,怎样操作?
SQL> grant select on emp to monkey;

授权成功。

撤销该权限则是
SQL> revoke select on emp from monkey;

撤销成功。


2。希望monkey可以查询scott.emp的表数据,怎样操作?
SQL> grant update on emp to monkey;

授权成功。

撤销该权限则是
SQL> revoke update on emp from monkey;

撤销成功。

3。希望monkey可以删除scott.emp的表数据,怎样操作?
SQL> grant delete on emp to monkey;

授权成功。

撤销该权限则是
SQL> revoke delete on emp from monkey;

撤销成功。

4。有没有更加简单的方法,一次把上面的所有权限赋给monkey?
SQL> grant update,select,delete on emp to monkey;

授权成功。

如果是将所有的权限都赋给monkey
SQL> grant all on emp to monkey;

授权成功。

3.授予对象权限


2)能否对monkey访问权限更加精细控制(授予列权限)


1。希望monkey只可以修改scott.emp表的sal字段,怎样操作?
grant update on emp(sal) to monkey;


2。希望monkey只可以查询scott.emp表的ename,sal数据,怎么样操作?
grant select on emp(ename,sal) to monkey;
...

4.授予alter权限
如果black用户要修改scott.emp表的结构,则必须授予对象权限
SQL>conn scott/tiger;
SQL>grant alter on emp to black;
当然也可以用system,sys用户来完成这件事。

5.授予execute权限
如果用户想要执行其它方案的包、过程、函数,则需要有execute权限。
比如为了让ken可以执行包dbms_transaction,可以授execute权限
SQL>conn system/Mayu2638
SQL>grant execute on dbms_transaction to ken;

6.授予index权限
如果想在别的方案的表上建立索引,则必须具有index对象权限。
如为了让black用户可以在scott.emp上建立索引,就给其index的对象权限
SQL>conn scott/tiger
SQL>grant index on scott.emp to black

7.使用with grant option选项
该选项用于转授对象权限,但是该选项只能被授予用户,而不能授予角色。
SQL>conn scott/tiger
SQL>grant select on emp to black with grant option
SQL>conn black/tiger
SQL>grant select on scott.emp to jones


8.回收对象权限
在oracle9i中,收回对象的权限可以由对象的所有者来完成,也可以用dba用户(sys,system)来完成。
这里要说明的是:收回对象权限后,用户就不能执行相应的sql命令,但是要注意的是对象的权限是否会被级联收回?
如:
scott——————》black——————》jones
select on emp        select on emp      select on emp

sql>conn scott/tiger
sql>revoke select on emp from black;

jones能否查询scott.emp表的数据?
答案:不能够查询到

因此可以说明,对象权限的收回是级联收回的与系统权限的收回不同
系统权限的收回不是级联收回的。


注意:如果对象权限被级联收回了,就算是blank的对象权限被恢复了,jones的对象权限还是没有的,要重新的赋给。

猜你喜欢

转载自1124117571.iteye.com/blog/2286264