oracle的显式授权和隐式授权(转)

原文:http://www.blogjava.net/haha1903/archive/2010/03/05/314577.html

编译 Trigger 出错 -- Oracle 的显式授权

编译 Trigger 出错,错误的原因是找不到sequence,但是在 sql 里面使用这个sequence非常正常。找了半天原因,另一个同事试了一下给这个sequence授权,就可以编译通过了。

疑惑了很久,为什么sql中可以用,编译trigger就不能用了呢。

查了一些资料,才明白。

是因为 Oracle 在编译Procedu的时候,只检查当前用户的权限,而不管角色。所以,即使这个用户是DBA,也没有用,必须要对这个用户授权。这就是显式授权。

我在CSDN上找到了一个很好的文章,解释了显式授权和隐式授权的区别。

附在下面。

来自CSDN博客,http://blog.csdn.net/pashine/archive/2009/12/21/5050060.aspx

oracle 对象的授权

Oracle授权

一、授权语法GRANT 语法:

1.显式授权(直接将对象授权给用户)

GRANT privilege [, ...] ON object [, ...]  TO  { Public| Group | Username|role} [WITH GRANT OPTION ]

2.隐式授权(通过将角色授权给用户)

GRANT role TO  { Public| Group | Username|role}

语法说明:

privilege (权限)

可能的权限有:

SELECT--访问声明的表/视图的所有列/字段.

INSERT--向声明的表中插入所有列字段.

UPDATE--更新声明的所有列/字段.

DELETE --从声明的表中删除所有行.

RULE   在表/视图上定义规则 (参见 CREATE RULE 语句).

ALL 赋予所有权限.

object 赋予权限的对象名.

可能的对象是:

table (表)

view (视图)

sequence (序列)

index (索引)

Public    代表是所有用户的简写.

Group     将要赋予权限的组GROUP .目前的版本中,组必须是用下面方法显式创建的.

Username  将要赋予权限的用户名.PUBLIC 是代表所有用户的简写.

role      某个角色,(如DBA)

WITH GRANT OPTION 允许向别人赋予同样权限,被授权的用户可以继续授权.

描述

对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限。

GRANT 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象的所有权限,包括删除它的权限。

说明

Oracle不允许在过程中使用未经显式授权的对象. 要使用另一用户的对象,必须通过另一用户给自己显示授权。

因为Oracle在编译存储过程时并不检查定义者拥有的角色,只是检查其被显式授予的权限,而DBA也是一种角色,所以即使是DBA,也需要显式授权。

二、授权方式 (显式和隐式)

对象授权有两种模式,显式和隐式:

显示授权和隐式授权的区别是:显示授权是直接把对象授权给用户,隐式授权是给用户授予角色的方式来实现授权。

1. 显式授权是直接用GRANT语句进行授权。

语法:GRANT 某种权限 TO 用户

如:

CONN  USER1/Password

GRANT SELECT  ON TABLE1 TO USER2;    --- 将user1的表TABLE1的select 权限显示授权给user2

GRANT UPDATE  ON TABLE1 TO USER2;    --- 将user1的表TABLE1的update权限显示授权给user2

注:用system/manager登录是没法授权的,要使USER2用户能在存储过程里面访问USER1用户的表,必须以USER1用户(该用户有dba权限)登录,然后授权就可以了。

SQL>grant select on USER1.MA_USERINFO to USER2

2.隐式授权则是通过ROLE来授权。

语法:GRANT 某个角色 TO 用户

如:

CONN  USER1

GRANT SELECT ON TABLE1 TO ROLE1;     --- 将USER1的表TABLE1的select权限显示授权给Role1

CONN  SYSTEM

GRANT ROLE1 TO USER2;                --- 给USER2授与Role1的权限。

三、收回权限   语法:

revoke 权限 from 用户;

例子:

revoke select on table1 from User1; 收回查询select表的权限;

revoke all    on table1 from User1;

grant  connect to xujin;

revoke  connect  from xujin

revoke  ROLE1    from USER2;

End

1 楼

hlw_bj

2011-09-20

oracle的显示和隐式,oracle的显式受权和隐式授权(转)相关推荐

  1. asp oracle 分页显示,利用ASP实现Oracle数据记录的分页显示

    [IT168 服务器学院]一.引言 通过浏览器访问数据量大的表时需要进行分页.ASP对数据库记录分页显示可以通过ADO对象集Recordset对象来实现.Recordset具有以下几个用于分页显示的属 ...

  2. 修改oracle客户端的编码,Oracle中文字符乱码?设置Oracle客户端字符编码与服务端一致...

    经常可能出现查询Oracle数据时,中文显示乱码,这很可能是因为,Oracle服务端的字符编码与客户端不一致引起的. 这时,我们需要做的是,如何设置自己的客户端字符编码与服务端一致. 查询Oracle ...

  3. oracle中的cursor属性有哪些,Oracle学习11:游标(cursor)--显式游标隐式游标、游标四个属性、循环遍历...

    1.概述 上文PLSQL学习中提到的知识,可以发现,基本都可以通过Java等语言实现,而为了实现程序的可移植性,实际开发工作中我们也是如此做的. 那么PLSQL的重点是什么呢?接下来我们来介绍游标cu ...

  4. Oracle隐式游标和显式游标

    游标是什么?就是在内存开辟的一块临时存储空间. 1.Oracle隐式游标 1.1Oracle有常用的哪些隐式游标 1.2 Oracle隐式游标演示 -- 隐式游标 (使用的表为Oracle默认自带的e ...

  5. oracle 游标内存自动释放,详解Oracle隐式游标和显式游标

    游标是什么?就是在内存开辟的一块临时存储空间. 1.Oracle隐式游标 1.1Oracle有常用的哪些隐式游标 1.2 Oracle隐式游标演示 -- 隐式游标 (使用的表为Oracle默认自带的e ...

  6. Oracle入门(十四.10)之显式游标简介

    一.上下文区域和游标 Oracle服务器分配一个称为上下文区域的私有内存区域来存储由SQL语句处理的数据. 每个上下文区域(因此每个SQL语句)都有一个与其关联的游标.您可以将游标视为上下文区域的标签 ...

  7. linux oracle显示乱码,Linux下oracle显示乱码解决

    1.登录oracle用户,登录dba,显示乱码??? [root@redhat4 ~]# su - oracle [oracle@redhat4 ~]$ sqlplus / as sysdba SQL ...

  8. oracle 设行宽,Oracle设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置

    Oracle设置SQLPlus结果显示的宽度,ORACLE sqlplus提示符设置 发布时间:2020-04-03 08:51:02 来源:51CTO 阅读:4392 作者:M_ling 一.SQL ...

  9. oracle提交数据按键,Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link)...

    Oracle PLSQL - 仅提交数据库链接(Oracle PLSQL - Commit only database link) 有没有办法只通过数据库链接而不是当前会话的数据提交在表上插入/更新的 ...

  10. oracle数据库应用与实践课件,Oracle数据库管理、开发与实践 教学课件 作者 杨永健 刘尚毅 第6章 PL SQL编程.ppt...

    [例6-15] 使用loop语句求得前100个自然数的和,并输出到屏幕,代码如下. SQL> set serveroutput on SQL> declare 2 sum_i int:= ...

最新文章

  1. 网站降权可从两方面着手分析
  2. 如何使用MATLAB绘制不同类型的二维图形
  3. 创业必看:中国八大草根富豪发家史
  4. 一楼二楼教师办公室图书馆操场计算机房,人教PEP四年级下册英语知识汇总.docx...
  5. JAVA 多用户商城系统b2b2c---配置中心和消息总线
  6. php获取服务器相关信息
  7. python按位与怎么算_python 的按位与、或、异或 运算
  8. putty 使用perm密钥文件登陆堡垒机
  9. Hibernate批量处理数据、HQL连接查询
  10. roseha修改服务器ip地址,roseha 9.0 for windows维护手册_v2.0-2015-04.pdf
  11. 微信服务号如何绑定腾讯云服务器
  12. 风景照片转水彩画效果PS动作
  13. 使用js+css样式实现淘宝详情页图片放大镜的效果
  14. 数值重映射方法(Remap)
  15. 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API
  16. ethtool查看网卡统计信息的流程
  17. ubuntu18.04 安装flash。
  18. (很全)英文外贸网站从建站到推广流程,外贸企业SEOer大菜鸟分享
  19. linux nfs 拒绝挂载,mount:被服务器拒绝的nfs访问
  20. 计算机视觉大型攻略 —— 特征与匹配(3)特征描述符

热门文章

  1. sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
  2. 2011 9 11最新过QQ游戏检测Cheat Engine(CE)搜索数据
  3. 万圣节| Huluween“魔幻洞窟”闯关之夜
  4. Google Admob 广告快速集成(并集成Firebase统计)
  5. R语言开放数据分析报告
  6. DDE学习1、DDE的原理和基本特点简介_马鸿凯_新浪博客
  7. MongoDB 分片集群搭建
  8. 软件测试面试之逻辑篇(一)
  9. python自动化测试-最常用的自动化测试框架
  10. TP路由器的ip映射配置