首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >撤消Oracle的任何权限

撤消Oracle的任何权限
EN

Stack Overflow用户
提问于 2014-09-18 08:53:25
回答 2查看 3K关注 0票数 2

嗨,我有一个问题。

Is posibble授予任何特权,但不包括相同模式的某些表。

例如:

代码语言:javascript
复制
 EXECUTE IMMEDIATE 
     'CREATE USER  USREJECUTA_SUI_ABAS
      IDENTIFIED BY VALUES ''test''
      DEFAULT TABLESPACE USERS
      TEMPORARY TABLESPACE TEMP
      PROFILE DEFAULT
      ACCOUNT UNLOCK';
     -- 2 Roles for USREJECUTA_SUI 
   EXECUTE IMMEDIATE 'GRANT CONNECT TO USREJECUTA_SUI_ABAS';
   EXECUTE IMMEDIATE 'GRANT RESOURCE TO USREJECUTA_SUI_ABAS';
   EXECUTE IMMEDIATE 'ALTER USER USREJECUTA_SUI_ABAS DEFAULT ROLE ALL';
     -- 1 System Privileges for USREJECUTA_SUI 
   EXECUTE IMMEDIATE 'GRANT SELECT ANY TABLE TO USREJECUTA_SUI_ABAS';          
   EXECUTE IMMEDIATE 'GRANT UPDATE ANY TABLE TO USREJECUTA_SUI_ABAS';  
   EXECUTE IMMEDIATE 'GRANT INSERT ANY TABLE TO USREJECUTA_SUI_ABAS';  
   EXECUTE IMMEDIATE 'GRANT UNLIMITED TABLESPACE TO USREJECUTA_SUI_ABAS';

现在撤消某些表的权限

代码语言:javascript
复制
REVOKE INSERT,UPDATE ON VELITTDA.TAPROVEEDORESXPAIS      FROM USREJECUTA_SUI';

但是系统会启动这个错误:

ORA-01927:无法撤消您未授予的权限。

你知道怎么做吗?我将非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2014-09-18 09:02:08

不,你不能。如果你给了某人SELECT ANY TABLE,你就给了他们查询数据库中任何表的能力。如果未授予对象级权限,则不能撤消对象级权限。

正确的方法几乎总是创建一个角色,该角色对用户需要访问的实际对象集具有对象级权限。将角色授予用户(以及需要一组类似权限的任何其他用户)。各种ANY角色实际上只适合像DBA这样的人。

票数 1
EN

Stack Overflow用户

发布于 2014-09-18 09:17:02

授予SELECT ANY TABLE (或任何其他any TABLE)权限通常是错误的,并且几乎与向任意模式用户授予DBA一样糟糕。

如果您试图避免发出大量的grant语句,那么可以使用从数据字典生成DDL的简单技巧。

代码语言:javascript
复制
set head off
set pagesize 0
spool grant_foo.sql

select 'GRANT SELECT ON '||table_name||' TO FOO_ROLE;'
from all_tables where owner = 'FOO'
order by table_name
;

spool off

然后根据需要编辑grant_foo.sql,然后再执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25902547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档