Oracle之角色
角色
就是相关权限的命令集合,使用角色的主要目的就是为了简化权限管理。
(一)预定义角色
即Oracle 所提供的角色,每种角色都执行一些特定的管理任务,下面是介绍常用的预定义角色connect,resource,dba
1、connect角色
具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了,那么connect角色具有哪些系统权限?
alter session(修改会话)
create cluster(创建簇)
create database link (数据库连接)
create session
create table
create view(创建视图)
create sequence (创建序列)
2、resource角色具有应用开发人员需要的其它权限,比如建立存储过程,触发器等。这里需要的是resource角色隐含了unlimited tablespace 系统权限。
resource角色包含以下系统权限:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
3、DBA角色
dba角色具有所有的系统权限,及with admin option 选项,默认的dba用户为sys和system 他们可以将任何系统权限授予其它用户。但是注意的是dba用户不具备sysdba和sysoper 的特权(启动和关闭数据库)
(二)自定义角色
根据自己需要定义,一般dba来创建,如果用别的用户建立,则需要create role的系统权限,在建立角色时,可以指定验证方式(不验证,数据库验证等)
1、建立角色(不验证)
如果角色是公用的,则可以采用不验证的方式建立角色。
create role 角色名 not identifed;
2、建立角色(数据库验证)
采用此方式,角色名,口令存放在数据库中。当**该角色时,必须提供口令。在建立这种角色时,需要为其提供口令
create role 角色 identified by 密码;
--------------------------------------------------------------------------------------
角色的授权
当建立角色时,角色没有任何权限,为了使得角色完成特定任务,必须为其授予相应的系统权限和对象权限。
1、给角色授权
给角色授予权限和用户授权没有太多区别,但是注意系统权限的unlimited tablespace 和
对象权限with grant option、选项不能授予角色的。
conn system/密码
grant create session to 角色名 with admin option
conn scott/[email protected]
grant select on scott.emp to 角色名
grant insert ,update,delete on scott.emp to 角色;
授权成功
2、分配角色给用户
一般由dba来完成,若以其他身份分配角色,则要求具有grant any role 的系统权限
conn system/密码
grant 角色名 to blake with admin option
blake可以将角色分配给其他用户。
3、删除角色
使用drop role ,一般是dba来执行,若其他用户则要求该用户具有drop any role 系统权限
conn system/密码
drop role 角色名
(三)显示角色信息
①显示所有角色
select * from dba_roles;
②角色具有的系统权限
select privilege ,admin_option from role_sys_privs where role ='角色';
③显示角色具有的对象权限
通过查询数据字典dba_tab_prvis可以查看角色具有的对象权限或是列的权限。
④显示用户具有的角色,及默认角色
当以用户的身份连接数据库时,oracle会自动的**默认的角色,通过查询数据字典视图dba_role_privs可以显示某个用户具有的所有角色及当前默认角色
slect grant_role,default_role from dba_role_privs where grantee="用户名";
图1
角色
就是相关权限的命令集合,使用角色的主要目的就是为了简化权限管理。
(一)预定义角色
即Oracle 所提供的角色,每种角色都执行一些特定的管理任务,下面是介绍常用的预定义角色connect,resource,dba
1、connect角色
具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了,那么connect角色具有哪些系统权限?
alter session(修改会话)
create cluster(创建簇)
create database link (数据库连接)
create session
create table
create view(创建视图)
create sequence (创建序列)
2、resource角色具有应用开发人员需要的其它权限,比如建立存储过程,触发器等。这里需要的是resource角色隐含了unlimited tablespace 系统权限。
resource角色包含以下系统权限:
create cluster
create indextype
create table
create sequence
create type
create procedure
create trigger
3、DBA角色
dba角色具有所有的系统权限,及with admin option 选项,默认的dba用户为sys和system 他们可以将任何系统权限授予其它用户。但是注意的是dba用户不具备sysdba和sysoper 的特权(启动和关闭数据库)
(二)自定义角色
根据自己需要定义,一般dba来创建,如果用别的用户建立,则需要create role的系统权限,在建立角色时,可以指定验证方式(不验证,数据库验证等)
1、建立角色(不验证)
如果角色是公用的,则可以采用不验证的方式建立角色。
create role 角色名 not identifed;
2、建立角色(数据库验证)
采用此方式,角色名,口令存放在数据库中。当**该角色时,必须提供口令。在建立这种角色时,需要为其提供口令
create role 角色 identified by 密码;
--------------------------------------------------------------------------------------
角色的授权
当建立角色时,角色没有任何权限,为了使得角色完成特定任务,必须为其授予相应的系统权限和对象权限。
1、给角色授权
给角色授予权限和用户授权没有太多区别,但是注意系统权限的unlimited tablespace 和
对象权限with grant option、选项不能授予角色的。
conn system/密码
grant create session to 角色名 with admin option
conn scott/[email protected]
grant select on scott.emp to 角色名
grant insert ,update,delete on scott.emp to 角色;
授权成功
2、分配角色给用户
一般由dba来完成,若以其他身份分配角色,则要求具有grant any role 的系统权限
conn system/密码
grant 角色名 to blake with admin option
blake可以将角色分配给其他用户。
3、删除角色
使用drop role ,一般是dba来执行,若其他用户则要求该用户具有drop any role 系统权限
conn system/密码
drop role 角色名
(三)显示角色信息
①显示所有角色
select * from dba_roles;
②角色具有的系统权限
select privilege ,admin_option from role_sys_privs where role ='角色';
③显示角色具有的对象权限
通过查询数据字典dba_tab_prvis可以查看角色具有的对象权限或是列的权限。
④显示用户具有的角色,及默认角色
当以用户的身份连接数据库时,oracle会自动的**默认的角色,通过查询数据字典视图dba_role_privs可以显示某个用户具有的所有角色及当前默认角色
slect grant_role,default_role from dba_role_privs where grantee="用户名";
图1