dba用户创建一个新普通用户test 赋予权限:
grant connect,resource to test;test用户创建表后,用dba用户:
revoke resource from test;
回收test用户的resource角色权限。
为什么回收了resource权限后还能对创建的表进行增删改查。
 
SQL> select grantee,privilege from dba_sys_privs where grantee='RESOURCE' order by privilege;
 得知resource角色包含的权限:
GRANTEE                        PRIVILEGE
------------------------------ ----------------------------------------
RESOURCE                       CREATE CLUSTER
RESOURCE                       CREATE INDEXTYPE
RESOURCE                       CREATE OPERATOR
RESOURCE                       CREATE PROCEDURE
RESOURCE                       CREATE SEQUENCE
RESOURCE                       CREATE TABLE
RESOURCE                       CREATE TRIGGER
RESOURCE                       CREATE TYPE
 
求: dba用户只授权connect,resource给用户,怎样才能回收用户对所以表的增删改查权限。oracle

解决方案 »

  1.   

    数据库用户对自己方案中的表的delete 和update 权限是隐性授予的,即该用户有create table 的权限,就拥有修改这些表的权限
    idle> conn / as sysdba
    sys@ORCL> grant connect,resource to test identified by test;sys@ORCL> conn test/testtest@ORCL> create table t (id number);test@ORCL> conn / as sysdbasys@ORCL> revoke resource from test;sys@ORCL> conn test/testtest@ORCL> insert into t values(1);test@ORCL> drop table t purge;test@ORCL> create table tt (id number);
    create table tt (id number)
    *
    ERROR at line 1:
    ORA-01031: insufficient privileges