Oracle DB 关于CONNECT、RESOURCE 和DBA 角色权限

授予角色的语法:

grant <object/system privilege> to <role name>;

一般情况下,在新建数据库用户后,都会习惯性的给用户授权CONNECT角色和RESOURCE角色:

GRANT connect,resource,dba TO 用户;

1、CONNECT 角色,拥有Connect权限的用户只可以登录ORACLE(仅具有创建SESSION的权限),不可以创建实体,不可以创建数据库结构。

2、RESOURCE 角色,是授予开发人员的。拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。同时,当把ORACLE resource角色授予一个user的时候,不但会授予ORACLE resource角色本身的权限,而且还有unlimited tablespace权限,但是,当把resource授予一个role时,就不会授予unlimited tablespace权限。


Create trigger--建立触发器;

Create sequence—建立序列;

Create type--建立类型;

Create procedure--建立过程;

Create cluster--建立聚簇;

Create operator--创建操作者;

Create indextype--创建索引类型;

Create table--建表。

3、DBA角色,--是授予数据库维护人员的。拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

从dba_sys_privs查看权限grantee privilege:

SQL>Select grantee,privilege from dba_sys_privs

         Where grantee= 'DBA'

         Order by privilege;

注意:

  • 10g 开始,connect里面只有 create session权限了;
  • resource权限里没有 create view;
  • 还需要重点说明下的是 unlimited tablespace(授予了resource权限给user, user1 其实自动有了unlimited tablespace权限)

4、Unlimited tablespace的特点: 
1、系统权限unlimited tablespace不能被授予role,只能被授予用户。也就是说,unlimited tablespace系统权限不能包含在一个角色role中 
2、unlimited tablespace没有被包括在resource role和dba role中,但是unlimited tablespace随着resource或者dba的授予而授予用户的。也就是说,如果将role角色授予了某个用户,那么这个用户将会拥有unlimited tablespace系统权限 
3、unlimited tablespace不能伴随这resource被授予role而授予用户。也就是说加入resource角色被授予了role_test角色,然后把role_test授予了test用户,但是此时unlimited tablespace没有被授予test用户

5、数据字典dba_tab_privs


各个列属性描述如下:

GRANTEE  :被授予权限的用户或角色

 OWNER: 权限拥有者

 TABLE_NAME:对象名字

 GRANTOR:执行授予权限用户的名字

 PRIVILEGE:对象的权限

 GRANTABLE:是否授予GRANT OPTION权限

 HIERARCHY:是否授予HIERARCHY OPTION

原文地址:https://www.cnblogs.com/lcword/p/13685059.html