Oracle 权限(grant、revoke)

数据库版本:11GR2sql

1、介绍 

  在oracle中没有其余数据库系统中的数据库的概念,对象都是建立在用户下。当前用户具备当前用户下全部对象的全部权限不管该对象是不是当前用户所建立。举个简单例子建立一个用户授予该用户链接权限,而后用管理员用户在该用户下建立一张表,该用户能够删除管理员在该用户下建立的表。数据库

 

2、权限

权限主要能够分红三类:系统权限、角色、对象权限。角色是一类权限的分组。express

1.系统权限session

系统权限其实就是用户在当前用户架构下所具备的权限。在11g中系统权限有200个,好比create table,UNLIMITED TABLESPACE等。架构

查询当前用户拥有的系统权限:oracle

SELECT * FROM user_sys_privs;

2.角色this

角色其实就是一类权限的分组,因此给用户分配角色其实也是在给用户分配权限。在oracle中有三个比较经常使用的角色。对于通常不是很严格的系统能够授予开发用户CONNECT、RESOURCE角色权限便可。spa

DBA:该角色具备数据库全部的权限。3d

CONNECT:该角色具备链接数据库的权限,和create session的权限同样。code

RESOURCE:该角色是应用程序开发角色,具备以下权限

 查询当前用户拥有的角色:

SELECT * FROM USER_ROLE_PRIVS;

3.对象权限

对象权限指的是其它拥有用户的对象的权限。其它用户对象的权限包括:SELECT,DELETE,UPDATE,ALTER,INSERT,INDEX,REFERENCES,FLASHBACK,DEBUG,QUERY REWRITE,ON COMMIT REFRESH;注意其它用户对象的权限没有drop的权限。 

查询当前用户拥有的对象权限:

SELECT * FROM USER_TAB_PRIVS;

 当前用户chenmh拥有用户zhang下student表的全部权限。

3、grant受权 

1.授予用户connect、resource角色权限。通常建立应用程序开发用户能够授予这两个角色的权限。

GRANT CONNECT,RESOURCE TO zhang;

2.授予用户chenmh用户zhang下person表的SELECT,DELETE,UPDATE,INSERT权限,授予具体的对象权限是对于权限严格控制的一种方案。

GRANT SELECT,DELETE,UPDATE,INSERT ON zhang.person TO CHENMH ;

 3.授予用户chenmh用户zhang下person表的全部权限

GRANT ALL PRIVILEGES ON zhang.person to chenmh;

grant权限图表:

4、REVOKE回收权限

1.回收角色权限

REVOKE CONNECT,RESOURCE FROM chenmh;

2.回收系统权限

REVOKE CREATE FROM chenmh;

3.回收用户对象权限,回收zhang用户下person表的全部权限,若是是单个授予的权限须要单个的收回

REVOKE ALL PRIVILEGES ON zhang.person FROM chenmh;

revoke图表:

5、批量操做

1.批量授予权限,授予用户chenmh拥有zhang下全部表的增删改查权限。生产批量执行sql

SELECT 'GRANT SELECT,DELETE,UPDATE,INSERT ON '||OWNER||'.'||TABLE_NAME||' TO CHENMH;' FROM dba_tables WHERE OWNER='ZHANG';

若是要查询其它对象能够查询dba_objects表。

2.批量收回系统权限,收回用户chenmh的全部系统权限

SELECT 'REVOKE '||PRIVILEGE||' FROM CHENMH;'  FROM DBA_SYS_PRIVS WHERE GRANTEE='CHENMH';

将拼接的sql复制出来执行查询。

3.批量收回角色权限

SELECT 'REVOKE '||GRANTED_ROLE||' FROM CHENMH;' FROM DBA_ROLE_PRIVS WHERE GRANTEE='CHENMH';

4.批量收回用户对象权限,收回用户chenmh在架构zhang下的全部权限

SELECT 'REVOKE '||PRIVILEGE||' ON '||OWNER||'.'||TABLE_NAME||' FROM CHENMH;' FROM DBA_Tab_Privs WHERE GRANTEE='CHENMH' AND OWNER='ZHANG'
ORDER BY TABLE_NAME,PRIVILEGE;

 

 

备注:oracle用户的视图权限比较特殊,须要单独授予resource角色不包含建立视图的权限。能够执行

grant create view to chenmh;

 

 

 

备注:

    做者:pursuer.chen

    博客:http://www.cnblogs.com/chenmh

本站点全部随笔都是原创,欢迎你们转载;但转载时必须注明文章来源,且在文章开头明显处给明连接。

《欢迎交流讨论》

相关文章
相关标签/搜索