Oracle 用户,角色,权限等

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

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

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

,包含的对象权限存放在 dba_tab_privs 中。
下面是“角色”、“用户”和“权限”的互查:

1. 用户

例:

@>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

2. 权限

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

2.1. 系统权限管理

2.1.1 系统权限分类

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

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

2.1.2 系统权限授权命令

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

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

 2.1.3.权限相关的视图

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

       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:     某个角色被赋予的相关表的权限

3. 角色

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

3.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.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;
角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应的权限也就没有了。

===================来自一泽涟漪的博客,转载请标明出处 www.cnblogs.com/ilifeilong===================

转载于:https://www.cnblogs.com/CandiceW/p/10029499.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 面试题(4)—— 多线程

Java实现多线程有哪几种方式。 implements Runnable, implements Callable,extends Thread Callable和Future、FutureTask的了解。 Callable和 Future 是juc包下的接口。 Callable 可以异步执行任务,一般和 ExecutorService 的submit方法一起使用。 Future 可以监听…

[css] 如何让大小不同的图片等比缩放不变形显示在固定大小的div里?写个例子

[css] 如何让大小不同的图片等比缩放不变形显示在固定大小的div里?写个例子 图片等比缩放 img{ object-fit: cover/contain;}div宽高比例固定,跟随屏幕变化而变化,利用padding垂直方向的属性来实现个人简介 我是歌谣,欢迎和大家一…

[css] 行内css和important哪个优先级高?

[css] 行内css和important哪个优先级高? !important 将覆盖行内css css优先级:行内css>id选择器(#)>伪类(:)>属性选择器([])>类选择器(.) > 类型选择器(div p a等) > 通用选择器(*)个人简介 我是歌谣,欢迎和大家一起交流…

Password

题目 题解 由打表得对于任意\(i \geq 1\)&#xff0c;都有第\(i1\)行和第\(i3\)行相等、 于是我们可以分块维护一下。 然后做完了。 代码 #include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> #include <algorithm>us…

The temporary upload location [/tmp/tomcat.xxx/work/Tomcat/localhost/etc] is not valid

大家好&#xff0c;我是烤鸭: 下面又来踩坑实录了。主要是两个问题&#xff0c;第一是图片上传异常&#xff0c;第二是下载文件异常。其实都是在服务器上写入失败。有的人说是权限问题&#xff0c;但是这个一直没人动过。 由于过年放假&#xff0c;导致测试环境很长时间…

[css] 说说你对前端二倍图的理解?移动端使用二倍图比一倍图有什么好处?

[css] 说说你对前端二倍图的理解&#xff1f;移动端使用二倍图比一倍图有什么好处&#xff1f; 二倍图是指单位面积下设备像素与css像素个数之比为 4 的位图。移动端使用二倍图可以在Retina屏幕下保真展示。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃…

人生苦短,我用python

0.10 |— 模块1&#xff1a;开发基础(23)0.11 |— 模块2&#xff1a;文件、函数、模块(29)0.12 |— 模块3&#xff1a;OO、网络编程(19)0.13 |— 模块4&#xff1a;并发编程(13)0.14 |— 模块5&#xff1a;Mysql数据库(16)0.15 |— 模块6&#xff1a;web前端开发(34)0.16 |— 模…

spring 多线程 事务 源码解析(一)

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享的是spring 多线程事务源码分析。 环境&#xff1a; spring-jdbc 5.0.4.REALEASE 今天分享一下spring事务的方法&#xff0c;这一篇还没涉及到多线程。 简单说一下doBegin的方法&#xff1a; 强转获取当前的事务对象&#…

[css] 你对视网膜(Retina)分辨率有了解吗?有没有在实际中使用过?

[css] 你对视网膜(Retina)分辨率有了解吗&#xff1f;有没有在实际中使用过&#xff1f; Retina分辨率指的是屏幕的物理分辨率达到了使得人眼难以看到单个物理像素&#xff1b;具体应用应该就是dpr > 1的屏幕适配&#xff0c;需要根据不同dpr给出合适尺寸的图片&#xff1b;…

Java学习之斐波那契数列实现

描述 一个斐波那契序列&#xff0c;F(0) 0, F(1) 1, F(n) F(n-1) F(n-2) (n>2)&#xff0c;根据n的值&#xff0c;计算斐波那契数F(n)&#xff0c;其中0≤n≤1000。 输入 输入数据的第一行为测试用例的个数t&#xff0c;接下来为t行&#xff0c;每行为一个整数n&#x…

[css] 移动端微信页面有哪些兼容性问题及解决方案是什么?

[css] 移动端微信页面有哪些兼容性问题及解决方案是什么&#xff1f; 1.rem方案通过reset js进行适配 2.vw 方案 搭配px to viewport进行适配个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 …

spring 多线程 事务的实际应用场景

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享的是spring 多线程 事务的实际应用场景&#xff1a; 上一篇讲了大概的原理,主要是针对事务的开始和执行过程(数据库链接&#xff0c;隔离级别&#xff0c;threadlocal线程绑定)。https://blog.csdn.net/Angry_Mills/article/…

Redis的过期策略和内存淘汰机制

过期策略 我们set key的时候&#xff0c;都可以给一个expire time&#xff0c;就是过期时间&#xff0c;指定这个key比如说只能存活1个小时&#xff0c;我们自己可以指定缓存到期就失效。 如果假设你设置一个一批key只能存活1个小时&#xff0c;那么接下来1小时后&#xff0c;r…

[css] 如何更改placeholder的字体颜色和大小?

[css] 如何更改placeholder的字体颜色和大小&#xff1f; <style>/* Chrome浏览器 */input::-webkit-input-placeholder {color: red;}/* 火狐浏览器 */input::-moz-placeholder {color: red;}/* IE */input:-ms-input-placeholder {color: red;}</style> <body…

[maven] springboot将jar包打包到指定目录

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下springboot将jar包打包到指定目录下。 由于之前上线都是一个打包到一个jar&#xff0c;由于服务多了&#xff0c;1个包100多M&#xff0c;哪怕是小版本上线都需要重新上传jar包。 1.目的 将不常用的比如spring,druid等不常…

[css] 当一个元素被设置为浮动后,它的display值变为什么呢?

[css] 当一个元素被设置为浮动后&#xff0c;它的display值变为什么呢&#xff1f; 一个元素被设为绝对定位或者浮动后&#xff0c;其display计算值就变为了block&#xff0c;尽管其表现形式和inline-block类似——包裹内部元素且不超出包含块的特性。按照如下方式在控制台尝试…

Homebrew 安装使用

## Homebrew 安装使用> Homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令&#xff0c;就可以实现包管理&#xff0c;而不用你关心各种依赖和文件路径的情况&#xff0c;十分方便快捷。 #### 安装/…

[css] 为什么会出现浮动?在什么时候需要清除浮动呢?

[css] 为什么会出现浮动&#xff1f;在什么时候需要清除浮动呢&#xff1f; 因为在 div css 代替 table 布局之后&#xff0c;利用 float 很容易进行一些自适应的布局&#xff0c;比如双飞燕和圣杯布局。当然&#xff0c;float 原本的用途就是用来进行文字环绕图片的&#xf…

springboot启动后卡住 无日志的几种情况

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下springboot启动后无日志的问题。 1.场景复现 springboot项目启动后卡住无日志&#xff0c;肯定是报错了或者其他原因&#xff0c;并且日志没有打印出来。 1.1 说一下比较通用常见的场景。 检查一下 是否 exc…

VMware下Centos7快速搭建vsftpd

最简单快捷的实现ftp的功能,不考虑安全问题. 1.配置防火墙和selinux vi /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX can take one of these three values: # enforcing - SELinux security policy is enforced. # per…