`
lcm1984
  • 浏览: 8298 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle中的用户、角色、权限(三)

阅读更多

三、角色

所谓角色,其实可以理解为是一组权限的集合。通过使用角色,可以更简单、更容易的管理权限。


角色的创建:

 

SQL> create role r1; --创建无密码的角色

Role created.

SQL> create role r2 identified by r2;  --创建有密码的角色

Role created.

 

 

 

角色的修改:

 

SQL> alter role r1 identified by r1;  --设置或修改角色r1的密码

Role altered.

SQL> alter role r2 not identified; --把角色r2设为无密码

Role altered.

 

 

给角色赋予权限:

SQL> grant create session to r1;  --给角色r1赋予create session权限

Grant succeeded.
 

 

角色的授予:

SQL> grant r1 to u1;  --把角色r1授予用户u1

Grant succeeded.

SQL> grant r1 to public;  --把角色r1授予所有用户

Grant succeeded.
 

默认角色:当一个用户拥有多个角色的时候,可以为该用户指定默认角色,所谓默认角色,指该用户登录数据库时所生效的角色,该用户的其它非默认角色将不生效。

SQL> grant r2 to u1;  --把角色r2赋予u1,此时u1具有r1、r2两个权限

Grant succeeded.

SQL> alter user u1 default role r1;  --把u1的默认角色设为r1

User altered.

SQL> alter user u1 default role all;  --将u1的默认角色设为它所具有的全部角色

User altered.

SQL> alter user u1 default role none;  --将u1的默认角色设为空

User altered.

SQL> alter user u1 default role all except r1;  --将出角色r1之外的其它角色设为u1的默认角色

User altered.

 

通过set role命令,可以临时改变一个用户的角色。

SQL> grant r1,r2 to u1; 

Grant succeeded.

SQL> alter user u1 default role r1;  --把u1的默认角色设为r1

User altered.

SQL> conn u1/u1;  --登录用户u1,此时u1具有r1的角色
Connected.

SQL> select * from session_roles;

ROLE
------------------------------
R1

SQL> set role r1,r2 identified by r2;  --使u1临时具有r1,r2的权限,因为r2有密码,所以必须要输入密码,这就是建立密码角色的作用。

Role set.

SQL> select * from session_roles;  --查询此时u1具有的角色

ROLE
------------------------------
R1
R2


SQL> set role r2 identified by r2;  --也可以把u1的角色临时设为r2

Role set.

SQL> select * from session_roles;

ROLE
------------------------------
R2

SQL> set role all except r1;  --发现当all里面包含有密码的角色时,会报错,当时下面的却可以
set role all except r1
*
ERROR at line 1:
ORA-01979: missing or invalid password for role 'R2'


SQL> set role all except r2;  --把u1的角色设为除r2外

Role set.

SQL> conn /as sysdba
Connected.
SQL> conn u1/u1  --重新登录u1的时候,此时的角色是设置的默认角色
Connected.
SQL> select * from session_roles;

ROLE
------------------------------
R1



 

删除角色:

SQL> drop role r1;

Role dropped.

 

关于上面的设置密码的角色,在应用中可以把具有增删改权限的角色设为有密码的角色,并设为非默认角色,则当用户要对数据库进行修改的时候必须要输入密码,这样可以在一定程度上保护数据不被破坏。


数据库中预先定义的角色:

1)CONNECT、RESOURCE、DBA  这几个权限比较常见

2)SELECT_CATALOG_ROLE:查询数据字典的权限

3)DELETE_CATALOG_ROLE:删除数据字典的权限

4)EXECUTE_CATALOG_ROLE:执行数据字典包的权限

 

数据库中与角色有关的数据字典,主要有以下几个:


dba_roles:数据库中存在的所有角色

SQL> desc dba_roles;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE                                      NOT NULL VARCHAR2(30)
 PASSWORD_REQUIRED                                  VARCHAR2(8)
 

dba_role_privs:数据库中用户和角色所具有的角色

SQL> desc dba_role_privs;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 GRANTEE                                            VARCHAR2(30)
 GRANTED_ROLE                              NOT NULL VARCHAR2(30)
 ADMIN_OPTION                                       VARCHAR2(3)
 DEFAULT_ROLE                                       VARCHAR2(3)
 

role_role_privs:数据库中角色所具有的角色

SQL> desc role_role_privs;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE                                      NOT NULL VARCHAR2(30)
 GRANTED_ROLE                              NOT NULL VARCHAR2(30)
 ADMIN_OPTION                                       VARCHAR2(3)

 

role_sys_privs:角色所具有的系统权限

SQL> desc role_sys_privs;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE                                      NOT NULL VARCHAR2(30)
 PRIVILEGE                                 NOT NULL VARCHAR2(40)
 ADMIN_OPTION                                       VARCHAR2(3)

 

role_tab_privs:角色所具有的对象权限

SQL> desc role_tab_privs;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE                                      NOT NULL VARCHAR2(30)
 OWNER                                     NOT NULL VARCHAR2(30)
 TABLE_NAME                                NOT NULL VARCHAR2(30)
 COLUMN_NAME                                        VARCHAR2(30)
 PRIVILEGE                                 NOT NULL VARCHAR2(40)
 GRANTABLE                                          VARCHAR2(3)

 

session_roles:当前用户所具有的角色

SQL> desc session_roles;
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ROLE                                      NOT NULL VARCHAR2(30)
 
分享到:
评论

相关推荐

    Oracle权限、角色和用户1

    1. **CONNECT角色**:适用于常规用户,提供基本的数据库连接权限,允许用户创建和管理自己的会话,比如创建表、视图和序列等。但不包含创建数据库结构的权限,如创建新的表空间或数据文件。 2. **RESOURCE角色**:...

    Oracle用户权限角色设置

    Oracle用户权限角色设置,用来在新建的数据库中添加新的用户,并为其设置权限。

    Oracle用户、权限、角色管理

    ### Oracle用户、权限、角色管理深度解析 在Oracle数据库的管理中,用户、权限和角色的管理是确保数据安全和高效使用的关键环节。本文将详细阐述Oracle中的用户管理、权限设置,以及角色管理的重要概念和操作流程。...

    使用PLSQL 创建Oracle数据库用户并设置权限

    1. 角色权限:角色权限是指用户在数据库中的角色,例如 connect、resource 等。 2. 系统权限:系统权限是指用户在数据库中的系统权限,例如 unlimited tablespace 等。 3. 配额权限:配额权限是指用户在数据库中的...

    oracle 用户、权限和角色管理

    oracle 用户、权限和角色管理,oracle 人员必看。

    oracle查看用户权限

    根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍如何在Oracle数据库中查看不同类型的用户权限。本文将按照以下顺序展开: 1. 查看所有用户 2. 查看用户或角色系统权限(直接赋值给用户或角色的系统...

    查看ORACLE用户权限

    其中,`dba_role_privs`显示所有用户的角色权限,而`user_role_privs`只展示当前用户的角色权限。 ### 6. 查看当前用户的缺省表空间 此外,我们还可以查询当前用户的缺省表空间和临时表空间: - `SELECT username...

    10 oracle管理权限和角色 PPT

    在Oracle中,权限和角色的概念是为用户提供访问控制机制,允许管理员精细地控制用户对数据库对象的访问权限,同时简化权限的分配过程。 1. 权限(Privileges):权限是Oracle中允许用户执行特定操作的能力。例如,...

    oracle-用户与权限的管理

    ### Oracle用户与权限管理详解 Oracle数据库作为一款广泛应用于企业级环境中的关系型数据库管理系统,其用户管理和权限分配机制是确保数据安全性与访问控制的关键环节。以下是对Oracle中用户、权限与角色管理的深入...

    Oracle用户角色及权限管理.docx

    Oracle数据库的用户角色及权限管理是数据库管理员(DBA)日常工作中不可或缺的部分,它涉及到数据库的安全性和访问控制。本文将详细阐述Oracle中的用户、角色和权限的概念以及如何进行管理。 首先,Oracle数据库中...

    oracle用户权限、角色管理详解

    Oracle 权限设置 一、权限分类: ...CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。 对于普通用户:授予connect, resource权限。 对于DBA管理用户:授予connect,

    oracle笔记控制用户权限及练习

    oracle笔记控制用户权限及练习,控制用户权限,授权,收回权限等操作,有具体的代码案例!

    oracle用户创建及权限设置

    ### Oracle用户创建及权限设置详解 #### 一、Oracle用户管理概述 在Oracle数据库中,用户管理和权限控制是非常重要的组成部分,它们确保了数据的安全性和访问的合理性。通过创建不同的用户并赋予相应的权限,可以...

    oracle查看用户、权限、角色的命令和视图

    在Oracle数据库管理中,了解如何查看用户、权限和角色对于维护数据库的安全性和功能至关重要。以下是对给定文件中提到的命令和视图的详细解析,旨在深入理解Oracle中用户、权限和角色的管理。 ### 1. 查看所有用户 ...

    使用PLSQL创建Oracle数据库User用户并设置权限

    使用PLSQL创建Oracle数据库User用户并设置权限 主要演示了如何使用 PLSQL 创建一个 User 用户, 并使之具有创建表、修改表、访问表的权限。解决了 使用自定义用户创建表时出现的 没有表空间的访问权限的问题。

    oracle用户的权限详细说明以及赋权的操作

    以上就是Oracle用户权限的详细说明,以及创建用户并为其分配权限的操作方法。作为数据库管理员,理解这些基础知识是管理好Oracle数据库的前提。通过命令行工具和数据库管理系统提供的视图,DBA可以有效地实现权限...

    oracle权限函数

    在Oracle数据库管理中,权限管理是一项重要的任务,它涉及到对用户、角色及对象等数据库实体的访问控制。通过合理地分配权限,可以有效地保护数据的安全性和完整性,同时确保业务流程的正常运行。下面我们将详细介绍...

    AIX 系统及 Oracle 数据库用户权限管理

    ##### 2.3 管理Oracle用户的方法 - **初始配置**:首先登录到数据库的系统用户oracle。 - **密码管理**:修改Oracle用户密码,确保其他系统用户不属于DBA组。 - **锁定默认用户**:修改SYS、SYSDBA密码,锁定其他...

    oracle中将一个用户的所有表的权限授予另一个用户的方法

    - **角色权限**:角色是一组权限的集合,可以被授予或撤销,简化权限管理。 ### 授予表权限的PL/SQL脚本 在给定的部分内容中,我们可以看到一个PL/SQL块示例,其目的是遍历当前用户的对象,并将特定类型的权限授予...

Global site tag (gtag.js) - Google Analytics