理论教育 Oracle数据库管理与开发:对象权限授权与撤销注意事项

Oracle数据库管理与开发:对象权限授权与撤销注意事项

时间:2023-10-30 理论教育 版权反馈
【摘要】:表7.2常用的对象权限续表例如,以system登录,授予用户tmpuser对HR用户下的DEPARTMENTS(部门表)的查询权限,然后以用户zhang登录对表进行查询。特殊权限all代表所有的对象权限,可以被授予或撤销。在对象权限的授权过程中,为了对COUNTRIES访问权限进行更加精细地控制,可以授予列权限的select、update和delete权限。撤销对象权限时应注意下述几点。①用户具有的对象权限只能由授予者或dba收回。

Oracle数据库管理与开发:对象权限授权与撤销注意事项

对象权限指访问其他方案对象的权力,用户可以直接访问自己方案的对象,当时如果要访问别的方案的对象,则必须具有对象权限。比如zhang用户要访问HR.COUNTRIES表(HR方案,COUNTRIES表),则必须在COUNTRIES表上具有对象的权限。

(1)为用户授予对象权限

使用grant语句执行授予对象权限:

dba用户(sys,system)可以将任何对象上的对象授予其他用户。对象权限可以授予用户、角色和public。在授予权限时,如果带有with grant option选项,则可以将该权限转授予给其他用户。但是要注意,with grant option选项不能授予给角色。

Oracle数据库中的对象权限有20多种,从数据字典table_privilege map中可以查询Oracle数据库的所有对象权限。常用的对象权限见表7.2。

表7.2 常用的对象权限

续表

例如,以system登录,授予用户tmpuser对HR用户下的DEPARTMENTS(部门表)的查询权限,然后以用户zhang登录对表进行查询。

这时就可以成功查询DEPARTMENTS表的信息。

特殊权限all代表所有的对象权限,可以被授予或撤销。如table的all权限包括select、insert、update和delete,还有index、alter和reference。

在对象权限的授权过程中,为了对COUNTRIES访问权限进行更加精细地控制,可以授予列权限的select、update和delete权限。

例如,希望zhang可以修改HR.COUNTRIES表的COUNTRY_NAME字段,怎样操作?

例如,希望zhang可以查询HR.COUNTRIES表的COUNTRY_ID,COUNTRY_NAME字段,怎样操作?

(2)查看对象权限

作为DBA,需要了解与对象权限相关的数据字典,主要有下述几个。

①dba_tab_privs:列出所有用户的对象权限。

②user_tab_privs:列出当前用户拥有的对象权限。

③dba_col_privs:列出所有用户所有列上的对象权限信息。

④user_col_privs:列出当前用户是对象所有者、授权者或被授权者的列对象权限信息。

在Oracle 11g系统中,可以使用user_tab_privs,user_col_privs等数据字典视图查看有关用户和对象权限的信息。(www.daowen.com)

(3)收回授予的对象权限

使用revoke语句收回已经授予某个用户的对象权限,使用revoke语句收回对象权限的语法:

收回对象权限可以由对象的所有者来完成,也可以由dba用户(sys、system)来完成。

例如,以system登录,收回用户zhang对HR.COUNTRIES表的查询权限。当然,也可以登录到HR用户,让它来进行收回对象权限。

这时,查询语句就会报错,提示没有权限,说明撤销成功。

撤销对象权限时应注意下述几点。

①用户具有的对象权限只能由授予者或dba收回。

②当多个用户向用户A授予相同的对象权限后,如果只是其中一个或部分用户从A收回了该对象权限,那么A用户仍然具有这个对象权限。只有当授予该对象权限的所有用户撤销用户A的这一对象权限后,A才失去该权限。这一点与撤销系统权限不同:只要有一个用户撤销了用户的系统权限,他就不再具有该权限。

③如果只是想收回WITH GRANT OPTION子句授予的管理对象权限的权力,而保留执行对象权限的能力,则只能先调用revoke语句撤销该对象权限,然后再使用不带WITH GRANT OPTION子句的GRANT语句授予用户该项对象权限的执行权力。

④如果使用WITH GRANT OPTION子句向用户A授予了某项对象权限,A又将该项权限授予了用户B,当收回用户A的这项对象权限时,用户B的该对象权限也一并被收回。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈