转载自 Oracle 用户,角色,权限等

权限管理是 Oracle 系统的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限。Oracle 的权限分为系统权限和数据对象权限,共一百多种,如果单独对用户授权,很囧,有一些用户需要的权限是相同的,就把这些用户归为同一类——某种角色,通过设立一些有预定权限的角色简化和明确授权操作,角色出现的动机也就是为了简化权限管理,它是权限的集合。一般做法是:系统把权限赋给角色,然后把角色赋给用户,当然也可以直接把某权限赋给用户。Oracle 提供细粒度的权限,可以对表的某一列单独设置权限,可以对某用户查询某表自动增添 where 限制条件。

权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级、System 系统级、Role 角色级。这些权限可以授予给用户、特殊用户public或角色,如果授予一个权限给特殊用户"Public"(用户public是oracle预定义的,每个用户享有这个用户享有的权限),那么就意味作将该权限授予了该数据库的所有用户。对管理权限而言,角色是一个工具,权限能够被授予给一个角色,角色也能被授予给另一个角色或用户。用户可以通过角色继承权限,除了管理权限外角色服务没有其它目的。权限可以被授予,也可以用同样的方式撤销。

Oracle 的角色存放在表 dba_roles 中,某角色包含的系统权限存放在  dba_sys_privs 中,包含的对象权限存放在 dba_tab_privs 中。

下面是“角色”、“用户”和“权限”的互查:

一、用户

例:

@>conn system/888888
Connected.
SYSTEM@userdata>create user user50 identified by user50;User created.SYSTEM@userdata>grant connect,resource to user50;Grant succeeded.

查看当前登录用户拥有的所有角色和系统权限

USER50@userdata>select * from session_privs;PRIVILEGE
------------------------------------------------------------------------------------------------------------------------
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE CLUSTER
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE10 rows selected.USER50@userdata>select * from role_sys_privs;ROLE             PRIVILEGE                ADMIN_OPT
---------------- ------------------------ ---------
RESOURCE         CREATE SEQUENCE            NO
RESOURCE         CREATE TRIGGER             NO
RESOURCE         CREATE CLUSTER             NO
RESOURCE         CREATE PROCEDURE           NO
RESOURCE         CREATE TYPE                NO
CONNECT          CREATE SESSION             NO
RESOURCE         CREATE OPERATOR            NO
RESOURCE         CREATE TABLE               NO
RESOURCE         CREATE INDEXTYPE           NO9 rows selected.

查看某一用户所拥有的角色和系统权限

SYSTEM@userdata>select * from dba_role_privs where GRANTEE='USER50';GRANTEE                      GRANTED_ROLE       ADMIN_OPT DEFAULT_R
------------------------------ -------------------- --------- ---------
USER50                         RESOURCE          NO          YES
USER50                         CONNECT            NO          YES
SYSTEM@userdata>select * from dba_sys_privs where GRANTEE='USER50';GRANTEE                         PRIVILEGE                     ADMIN_OPT
------------------------------ ------------------------------ ---------
USER50                          UNLIMITED TABLESPACE           NO

查看某一用户拥有的对象权限

SYSTEM@userdata>grant select on scott.emp to user50;SYSTEM@userdata>select * from dba_tab_privs where GRANTEE='USER50';GRANTEE               OWNER           TABLE_NAME      GRANTOR         PRIVILEGE      GRANTABLE  HIERARCHY
-------------------- --------------- --------------- --------------- --------------- --------- ---------
USER50                SCOTT           EMP             SCOTT           SELECT         NO         NO

二、 权限

  • 系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。
  • 对象权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

(1)系统权限管理

A. 系统权限分类

  • DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
  • RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
  • CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。

B.系统权限授权命令

[系统权限只能由DBA用户授出:sys, system]
授权命令:SQL> grant connect, resource, dba to 用户名1 [,用户名2]...;

[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收。]

C.权限相关的视图

与权限,角色相关的视图大概有下面这些:

DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限

USER_SYS_PRIVS:   当前用户所拥有的系统权限

SESSION_PRIVS:     当前用户所拥有的全部权限

ROLE_SYS_PRIVS:     某个角色所拥有的系统权限

注意: 要以SYS用户登陆查询这个视图,否则返回空.

ROLE_ROLE_PRIVS:    当前角色被赋予的角色

SESSION_ROLES:      当前用户被激活的角色

USER_ROLE_PRIVS:   当前用户被授予的角色

另外还有针对表的访问权限的视图:

TABLE_PRIVILEGES

ALL_TAB_PRIVS

ROLE_TAB_PRIVS:     某个角色被赋予的相关表的权限

三、 角色

(1)何为角色
  角色。角色是一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限。

(2)系统预定义角色
  预定义角色是在数据库安装后,系统自动创建的一些常用的角色。下介简单的介绍一下这些预定角色。角色所包含的权限可以用以下语句查询:
sql>select * from role_sys_privs where role='角色名';

1.CONNECT, RESOURCE, DBA
这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色。

2.DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE
这些角色主要用于访问数据字典视图和包。

3.EXP_FULL_DATABASE, IMP_FULL_DATABASE
这两个角色用于数据导入导出工具的使用。

4.AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE
AQ:Advanced Query。这两个角色用于oracle高级查询功能。

5. SNMPAGENT
用于oracle enterprise manager和Intelligent Agent

6.RECOVERY_CATALOG_OWNER
用于创建拥有恢复库的用户。关于恢复库的信息,参考oracle文档《Oracle9i User-Managed Backup and Recovery Guide》

7.HS_ADMIN_ROLE
A DBA using Oracle's heterogeneous services feature needs this role to access appropriate tables in the data dictionary.

(3) 管理角色

1.建一个角色
sql>create role role1;

2.授权给角色
sql>grant create any table,create procedure to role1;

3.授予角色给用户
sql>grant role1 to user1;

4.查看角色所包含的权限
sql>select * from role_sys_privs;

5.创建带有口令的角色(在生效带有口令的角色时必须提供口令)
sql>create role role1 identified by password1;

6.修改角色:是否需要口令
sql>alter role role1 not identified;
sql>alter role role1 identified by password1;

7.设置当前用户要生效的角色
(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有直接赋给用户的权限和用户默认角色中的权限赋给用户。)
sql>set role role1;//使role1生效
sql>set role role,role2;//使role1,role2生效
sql>set role role1 identified by password1;//使用带有口令的role1生效
sql>set role all;//使用该用户的所有角色生效
sql>set role none;//设置所有角色失效
sql>set role all except role1;//除role1外的该用户的所有其它角色生效。
sql>select * from SESSION_ROLES;//查看当前用户的生效的角色。

8.修改指定用户,设置其默认角色
sql>alter user user1 default role role1;
sql>alter user user1 default role all except role1;
详见oracle参考文档

9.删除角色
sql>drop role role1;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

Oracle入门(九)之用户、角色与权限之间关系相关推荐

  1. oracle9i新建数据库的用户有哪些,Oracle 9i数据库的用户创造以及权限分配

    Oracle 9i数据库的用户创建以及权限分配 1.数据库安装时的参数设定 下文中的数据库版本为Oracle 9i(9.2.0),安装数据库时,数据库系统会创建一个数据库实例,其中:安装目录选为:\o ...

  2. apache2 wordpress目录权限_小白指南:WordPress中的用户角色和权限

    WordPress本身自带了一套用户角色管理系统,这套系统定义了每个用户角色可以做什么,不可以做什么.随着网站的发展,弄懂这些用户角色和权限的问题是非常有必要的.在这篇小白指南中,我们将用图表的形式对 ...

  3. 权限分配 html,如何为LightSwitch HTML移动客户端分配用户角色和权限

    如何为LightSwitch HTML移动客户端分配用户角色和权限 07/08/2013 6 minutes to read In this article [原文发表时间] 2013-06-25 0 ...

  4. oracle中角色的用户和权限管理,用户角色与权限控制

    一.oracle中的用户 系统用户:sys.system(系统创建的用户) 登录命令:sqlplus sys/密码 as sysdba 备注:sys是oracle数据库中最高权限用户,角色为sysdb ...

  5. PostgreSQL用户角色和权限管理

    一.用户角色管理 1.创建用户角色 create user cjr LOGIN;create role cjr1 CREATEDB;create role cjr2 superuser; create ...

  6. RabbitMQ用户角色及权限控制

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 RabbitMQ的用户角色分类: none.management.policymaker.monitoring.administrator user ...

  7. oracle、mysql创建用户赋DBA权限

    一.如何创建一个mysql新用户并授予DBA权限命令. 1.该指令创建了channel用户,设置其密码为123456, 并允许channel从任意ip登陆,并且给予channel任意权限. creat ...

  8. 数据库管理员用户角色组权限设计

    一.引言 因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计. 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新 ...

  9. 用户角色及权限管理设计实例(基于RBAC模型)

    文章目录 1. 五张表模型 2. 需求分析 3. 数据库设计 4. 用户分组 5. 权限分类 6. 参考 1. 五张表模型 RBAC(Role-Based Access Control),基于角色的访 ...

最新文章

  1. 2022-2028年中国民用航空装备行业市场需求与投资规划分析报告
  2. ntp 、ntpdate 、chrony 时间同步
  3. opengl加载显示3D模型ZAE类型文件
  4. 朴素贝叶斯原理及实现
  5. 如何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)
  6. elk入门_ELK堆栈入门
  7. xxl-job 执行结果是空_xxljob dotnet core executor执行器开源
  8. 沐雪微信平台---企业微信营销专家
  9. Python 基本功能应用与简单数据分析
  10. 批量更改图片文件的格式有什么方法?
  11. 用IntelliJ IDEA自带的代码对比
  12. Java 冒泡排序的使用
  13. 数据分析试题集+答案
  14. 独家对话英伟达首席科学家:解码AI芯片战局
  15. set的用法及短语_set的用法和例句
  16. Adobe Acrobat XI经验总结(更于2022.5.11)
  17. C语言rewind函数返回值为空,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...
  18. 算法入门章——引出贯穿《算法导论》全书的算法分析和设计框架
  19. Windows 8寄托着微软对移动计算、客厅控制和超级操作系统的全新理解与尝试
  20. 高中计算机期末试题,高中信息技术期末试卷

热门文章

  1. [SpringSecurity]web权限方案_用户认证_自定义用户登录页面
  2. C++实现AOE网中的关键路径算法及机动时间计算算法(邻接表存储)
  3. 高等数学下-赵立军-北京大学出版社-题解-练习9.3
  4. 《C++ Primer》14.4节练习(部分)
  5. scp连接计算节点操作
  6. Cookie和Session的作用和工作原理
  7. python import 问题
  8. P2487 [SDOI2011]拦截导弹(cdq分治/计数问题思想)
  9. 对数位dp的一些拙见
  10. 业界萌新对斯坦纳树的小结