角色是一个独立的数据库实体,它包括一组权限。 也就是说,角色包括一个或者多个权限的集合,它不被哪个用户所拥有。角色可以被授予任何权限,也可以从用户吧角色回收。
几个系统预定义角色:
connect
resource
dba
exp_full_database
imp_full_database
角色connect 、resource 、dba 主要用于数据库管理,这三个角色之间相互没有包含关系(有些系统权限有重叠)。数据库管理员需要分别授予,connect 、resource、dba 角色,对于一般数据开发人员需要授予connect 、resource角色。角色exp_full_database、imp_full_database用于操作数据库的导出或导入工具,如操作数据库工具expdp、impdp或者系统exp、imp。
通过dba_roles 数据字典查询oracle 系统预定义角色。
创建角色
create role role_name [not identified | identified by [password] | [exeternally] | [globally]]
--role_name角色名, identified by password 口令,identified by exeternally角色名在操作系统下验证,identified by globally 表示用户时Oracle安全域中心服务器验证,此角色由全局用户来使用。
create role desinger identified by 123456;
授权用户
grant create ,view ,create table to desinger;
角色获得了权限后,就可以把角色授权给某个用户。
grant desinger to dongfang;
查看角色包含的权限
使用role_sys_privs数据字典,查看角色包含权限
修改角色密码
alter role desinger identified by mrsoft;
设置当前用户生效角色
假设用户a由b1,b2,b3三个角色,如果b1未生效,则b1所包含的权限对于a来讲是不被拥有的,只有角色生效了,角色内权限才能用于用户。最大可生效角色数由MAX_ENABLED_ROLES设定。
--设置角色生效
set role desinger identified by mrsoft;
删除角色
删除角色后,原来拥有该角色的用户将不再拥有该角色,相应权限也将失去。
drop role desinger;
创建角色和用户之后,给角色和用户赋予的权限记录在Oracle数据字典中,
数据字典
dba_col_privs 数据库列上的所有权限
dba_role_privs 显示已经授予用户或其他角色的角色
dba_tab_privs 数据库对象上的所有权限
dba_sys_privs 已授予用户或角色的系统权限