Oracle12C--角色(二十二)
2017-04-24 09:34
246 查看
知识点的梳理:
12c,在CDB下创建的角色,也要使用"C##"开头;
多个权限可以通过角色统一的管理,一个角色会包含若干个权限;
为了方便用户授权操作,可以直接利用connect,resource两个角色进行授权;
角色是啥?
角色是一组相关权限的集合(可以是系统权限,也可以是对象权限),可通过一个角色来维护多个具有相同权限的用户;
创建角色
创建角色可以通过DBA或具有相应create role权限的用户来完成
语法:
示例:创建一个普通的角色
示例:创建一个带有密码的角色
示例:通过dba_roles数据字典查看创建的角色:
角色授权
角色创建完成后,需要为角色授权
示例:为c##mldn_role_a角色授权
示例:为c##mldn_role_b角色授权
示例:查询role_sys_privs数据字典,查看两个角色的权限信息
为用户授予角色
将c##mldn_role_a的角色授予c##mldnuser用户
将c##mldn_role_a和c##mldn_role_b的角色授予c##mldnjava用户
查询c##mldnuser用户权限
修改角色及回收角色权限
角色密码的设置
设置密码语法:alter role
角色名称 [not identified|identified by
密码];
示例:将c##mldn_role_a的角色密码设置为hellomldn
ALTER ROLE c##mldn_role_a IDENTIFIED BY hellomldn ;
示例2:取消c##mldn_role_b角色的密码
ALTER ROLE c##mldn_role_b NOT IDENTIFIED ;
通过角色回收权限
示例:将CREATE SESSION的权限从c##mldn_role_a角色中回收
REVOKE CREATE SESSION FROM c##mldn_role_a ;
示例:查询c##mldn_role_a角色中的权限信息
删除角色
语法:drop role
角色名称;
角色被删除后,其拥有此角色的用户权限也将一起被删除;
示例:删除c##mldn_role_b角色
DROP ROLE c##mldn_role_b ;
预定义角色
Oracle预定义角色
connect,resource
它们是Oracle中两个最大的角色
示例:通过sys用户查询CONNECT和RESROUCE角色所拥有的权限
查询后发现这两个角色具备常用的权限,所以在创建新用户后,最简单的做法就是将这两个角色直接授予用户
示例:将CONNECT、RESOURCE角色授予c##mldnuser用户
12c,在CDB下创建的角色,也要使用"C##"开头;
多个权限可以通过角色统一的管理,一个角色会包含若干个权限;
为了方便用户授权操作,可以直接利用connect,resource两个角色进行授权;
角色是啥?
角色是一组相关权限的集合(可以是系统权限,也可以是对象权限),可通过一个角色来维护多个具有相同权限的用户;
创建角色
创建角色可以通过DBA或具有相应create role权限的用户来完成
语法:
create role 角色名称 [not identified | identified by 密码]; | not identified(默认):不需要任何的口令标记; identified by 密码:创建角色的时候同时设置密码,该密码主要用在角色激活时使用; |
CREATE ROLE c##mldn_role_a ; | 创建一个名为c##mldn_role_a的角色,该角色采用默认设置 |
CREATE ROLE c##mldn_role_b IDENTIFIED BY hellojava ; | |||
创建角色时设置的密码是在角色启用时使用的,可通过如下语句试验: 禁用当前会话中的所有角色
|
SELECT * FROM dba_roles WHERE role IN ('C##MLDN_ROLE_A','C##MLDN_ROLE_B'); |
角色创建完成后,需要为角色授权
示例:为c##mldn_role_a角色授权
GRANT CREATE SESSION , CREATE TABLE , CREATE VIEW , CREATE SEQUENCE TO c##mldn_role_a ; |
为c##mldn_role_a授予4个权限,保证c##mldn_role_a角色下的所有管理员具备创建基本数据库对象的能力 |
GRANT CREATE SESSION , CREATE ANY TABLE , INSERT ANY TABLE TO c##mldn_role_b ; |
SELECT * FROM role_sys_privs WHERE role IN ('C##MLDN_ROLE_A' , 'C##MLDN_ROLE_B') ORDER BY role ; |
为用户授予角色
将c##mldn_role_a的角色授予c##mldnuser用户
GRANT c##mldn_role_a TO c##mldnuser ; |
GRANT c##mldn_role_a ,c##mldn_role_b TO c##mldnjava ; |
与授权操作一样,可以将一个或多个角色授予用户 |
CONN c##mldnuser/hellojava COL privilege FOR A30 ; SELECT * FROM session_privs ; |
角色密码的设置
设置密码语法:alter role
角色名称 [not identified|identified by
密码];
示例:将c##mldn_role_a的角色密码设置为hellomldn
ALTER ROLE c##mldn_role_a IDENTIFIED BY hellomldn ;
示例2:取消c##mldn_role_b角色的密码
ALTER ROLE c##mldn_role_b NOT IDENTIFIED ;
通过角色回收权限
示例:将CREATE SESSION的权限从c##mldn_role_a角色中回收
REVOKE CREATE SESSION FROM c##mldn_role_a ;
示例:查询c##mldn_role_a角色中的权限信息
SELECT * FROM role_sys_privs WHERE role='C##MLDN_ROLE_A' ORDER BY role ; |
语法:drop role
角色名称;
角色被删除后,其拥有此角色的用户权限也将一起被删除;
示例:删除c##mldn_role_b角色
DROP ROLE c##mldn_role_b ;
预定义角色
Oracle预定义角色
No. | 预定义角色 | 描述 |
1 | exp_full_database | 导出数据库权限 |
2 | imp_full_database | 导入数据库权限 |
3 | select_catalog_role | 查询数据字典权限 |
4 | execute_catalog_role | 数据字典上的执行权限 |
5 | delete_catalog_role | 数据字典上的删除权限 |
6 | dba | 系统管理的相关权限 |
7 | connect | 授予用户最典型的权限 |
8 | resource | 授予开发人员的权限 |
它们是Oracle中两个最大的角色
示例:通过sys用户查询CONNECT和RESROUCE角色所拥有的权限
SELECT * FROM role_sys_privs WHERE role IN ('CONNECT' , 'RESOURCE') ORDER BY role ; |
示例:将CONNECT、RESOURCE角色授予c##mldnuser用户
GRANT CONNECT , RESOURCE TO c##mldnuser ; |
相关文章推荐
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- Oracle12C--角色(二十二)
- 分享知识-快乐自己:oracle12c创建用户提示ORA-65096:公用用户名或角色无效
- Oracle 12C ORA-65096: 公用用户名或角色名无效
- Oracle 12c 用户创建、角色、权限
- 【Oracle 12c Flex Cluster专题】—节点角色转换
- Oracle 12C ORA-65096: 公用用户名或角色名无效