角色管理:
1. 角色可以认为是一组权限的集合。
你可以把一些权限赋予角色,然后把角色赋予给一个用户
2. 角色还可以赋予另一个角色。但给角色赋予角色过程中,不能形成环路
--比如,A角色赋予给B,B角色赋予给C,C角色再赋予给A的时候,就报错。
角色的好处。
1. 利于权限的分配。
--当很多个用户需要分配相同权限时,你可能给每个人进行同样的操作。
--列:有10个权限,每次来个用户,你就得给他这些权限。
这样,每添加一个用户,你就得做10此操作。
要是用角色来管理,就是每次只做一次操作。
2. 利于管理
--当给很多个用户已经分配了很多权限,但发现某个权限是不需要的。
或者说是这个权限不能分配给这些用户。
你是用角色来分配权限时,你只要把角色的权限收回就可。非常方便。
默认有的角色。
数据库创建后就已经预先建立了很多角色权限。
SQL> select role from dba_roles; ROLE ------------------------------ CONNECT RESOURCE DBA SELECT_CATALOG_ROLE EXECUTE_CATALOG_ROLE DELETE_CATALOG_ROLE EXP_FULL_DATABASE IMP_FULL_DATABASE ... CTXAPP XDBADMIN XDBWEBSERVICES OLAP_DBA OLAP_USER MGMT_USER 33 rows selected.
其中,DBA具有大部分的管理权限。
一般对数据库进行维护的时候,最好建立一个DBA权限的用户来代替sys或者system用户
因为sys和system用户的权限太大。
最好不要把sys权限分配给非管理数据库的用户。
下面创建一个用户,给个DBA权限。
SQL> create user dba_test identified by dba1234;User created.
SQL> grant dba to dba_test;
Grant succeeded.
SQL> conn dba_test/dba1234;
Connected.
SQL> show user
USER is "DBA_TEST"
SQL> conn dba_test/dba1234 as sysdba
ERROR:
ORA-01031: insufficient privileges
Warning: You are no longer connected to ORACLE.
SQL> show user
USER is ""
可以看到,DBA权限的用户是不能以sysdba权限登录的。
一般现在分配给用户的时候分配服下权限
1. CONNECT
--这个权限是包含了一个CREATE SESSION的系统权限。
select PRIVILEGE from role_sys_privs where ROLE = 'CONNECT';
2. RESOURCE
--包含几个基本的CREATE权限。看下面的结果
select PRIVILEGE from role_sys_privs where ROLE = 'RESOURCE';
--在这里注意的是,在10G以前(到9i为止),RESOURSE包含UNLIMITED TABLESPACE权限。
3. UNLIMITED TABLESPACE
--9i或之前的版本,在RESOURCE权限里已经有这个权限,所以不必要另行分配。
在这里,1跟2是角色来分配。这样,以后就好管理了。
或者,你可以自行创建角色来分配给用户,然后去管理。
比如,要是公司内部结果分的比较细,你可以创建一个HR_ROLE的角色,
然后数据库里有HR_TS的表空间,就可以把如下的权限分配给HR_ROLE角色。
--这个权限包含了
--1. CONNECT
--2. RESOURCE
--3. UNLIMITED TABLESPACE
这样,以后对HR用户分配角色时只分配一个HR_ROLE,然后对这一组人更改权限,就更改HR_ROLE角色。
创建角色使用 CREATE ROLE[IDENTIFIED BY ]
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8310173/viewspace-614048/ ,如需转载,请注明出处,否则将追究法律责任。