oracle grant授权的理解

摘要:
SELECT访问声明的表/视图的所有列/字段。INSERT将所有列字段插入到声明的表中。UPDATE更新声明的所有列/字段。DELETE从声明的表中删除所有行。RULE定义表/视图上的规则(请参见CREATERULE语句)。ALL给出了所有权限制。对象提供权限的对象名称。可能的对象有:
GRANT 名称

  GRANT — 赋予一个用户,一个组或所有用户访问权限

  GRANT privilege[, ...] ON object[, ...] TO { PUBLIC | GROUP group| username}

  输入

  privilege

  可能的权限有:

  

  SELECT

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

  INSERT

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

  UPDATE

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

  DELETE

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

  RULE

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

  ALL

  赋予所有权限.

  object

  赋予权限的对象名.可能的对象是:

  table (表)

  view (视图)

  sequence (序列)

  index (索引)

=======================================

  PUBLIC

  代表是所有用户的简写.

  GROUP group

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

  username

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

  输出

  CHANGE

  如果成功,返回此信息.

  ERROR: ChangeAcl: class "object" not found

  如果所声明的对象不可用或不可能对声明的组或用户赋予权限. 描述

  GRANT 允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限.对象创建后,除了创建者外,除非创建者赋予(GRANT)权限,其他人没有访问对象的权限.

  一旦用户有某对象的权限,他就可以使用那个特权.不需要给创建者赋予(GRANT)对象的权限,创建者自动拥有对象的所有权限,包括删除它的权限.

  注意

  目前,要想在 Postgres 里面只赋予几列权限,你必须创建一个包含那几列的视图(view),然后把权限赋予那几个视图。

  使用 psql z 命令获取关于现存对象权限的更多信息:

  Database = lusitania +------------------+---------------------------------------------+ | Relation | Grant/Revoke Permissions | +------------------+---------------------------------------------+ | mytable | {"=rw","miriam=arwR","group todos=rw"} | +------------------+---------------------------------------------+ Legend: uname=arwR -- privileges granted to a user group gname=arwR -- privileges granted to a GROUP =arwR -- privileges granted to PUBLIC r -- SELECT w -- UPDATE/DELETE a -- INSERT R -- RULE arwR -- ALL

  小技巧: 目前,要创建一个 GROUP (组), 你将不得不手工向表 pg_group 中插入数据,像:

  INSERT INTO pg_group VALUES ('todos');CREATE USER miriam IN GROUP todos;

  参考 REVOKE 语句重新分配访问权限.用法

  给所有用户向表 films 插入记录的权限:

  GRANT INSERT ON films TO PUBLIC;

  赋予用户 manuel 操作视图 kinds 的所有权限:

  GRANT ALL ON kinds TO manuel; 兼容性

  SQL92

  SQL92 GRANT 语法允许对表中的某单独列/字段设置权限,并且允许设置一权限以赋予别人相同权限.

  GRANT privilege[, ...] ON object[ ( column[, ...] ) ] [, ...] TO { PUBLIC | username[, ...] } [ WITH GRANT OPTION ]

  这些字段与 Postgres 实现是兼容的,除了下面一些例外:

  privilege

  SQL92 允许声明附加的权限:

  SELECT

  

  REFERENCES

  允许在一个声明的表的整合约束中使用某些或全部列/字段.

  USAGE

  允许使用一个域,字符集,集合或事务.如果声明的对象不是表/视图, privilege只能声明为 USAGE.

  object

  [ TABLE ] table

  SQL92 允许一个附加的非函数关键字 TABLE.

  CHARACTER SET

  允许使用声明的字符集.

  COLLATION

  允许使用声明的集合序列.

  TRANSLATION

  允许使用声明的字符集转换.

  DOMAIN

  允许使用声明的域.

  WITH GRANT OPTION

  允许向别人赋予同样权限.

  Oracle由于用户不是dba出现ORA-01536 :

  是因为没有表空间的操作权限可以加上:

  GRANT UNLIMITED TABLESPACE TO

  

  在Oracle10中新建了一个用户,然后编写存储过程在PL/SQL Developer中调试,提示

  ORA-0131: Insufficient privileges.

  Note: Debugging requires the DEBUG CONNECT SESSION system privilege.

  用管理员帐号登录后,执行

  grant Debug Connect Session to sky_test;

  命令后,再进行调试,一切OK

免责声明:文章转载自《oracle grant授权的理解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇图片四个方向无缝循环滚动代码IOS:被误解的MVC和被神化的MVVM下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。

我自己就是一个oracle和sql的初学者,前段时间看了韩顺平老师的oracle视频教程,觉得很深入浅出,收获了很多。同时自己也做了不少笔记,现在想将纸质笔记以自己的话总结出来。俗话说得好:教学总是相得益彰,在总结的过程中想必会加深自己的印象,能够巩固自己的学习过程。 oracle 用户部分: 创建用户:create user user_name iden...

TSQL笔记1:SELECT及SELECT高级应用

T-SQL笔记1:SELECT及SELECT高级应用 本章摘要 1:安装AdventureWorks 2:基本运算符和表达式 3:between 4:like 5:escape 6:TOP 7:GROUP BY    7.1:GROUP BY ALL    7.2:HAVING 8:SELECT字句技术    8.1:使用DISTINCT消除...

android studio如何查看数据库文件

android studio查看数据库文件有两种方式: 1、SQLSCOUT 优点:集成在as中,功能强大。 缺点:收费,破解麻烦。 2、Android Device Monitor 中的File Expoler 优点:免费 缺点:需要导出数据库,并用数据库可视化工具查看;手机需要root获得su权限,并通过adb命令修改/data/data/databa...

反序列化漏洞

反序列化 原理介绍 序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中;反序列化即逆过程,由字节流还原成对象。Java中的ObjectOutputStream类的writeObject()方法可以实现序列化,类ObjectInputStream类的readObject()方法用于反序列化。比如你可以将字符串对象先进行序列化,存储到本地文件,然后再...

【底层原理】用户进程缓冲区和内核缓冲区

  常常听到有程序员会跟你讨论:“我们在读写文件的时候,系统是有缓存的”。但实际上有一部分人把用户进程缓存区和系统空间缓存区的概念混淆了,包括这两种缓冲区的用法和所要解决的问题,还有其它类似的概念。本文就来区分一下不同的缓冲区概念(主要针对类unix平台)。   用户进程和操作系统的关系,首先我用一张图来解释“用户进程和操作系统的关系   这是一个计算机...

mysql 统计行数count(*)

myIsam引擎把一个表的总行数存在了磁盘上,因此执行count(*)会直接返回结果,效率很高   #但是myisam不支持事物 innodb引擎需要把数据一行行从引擎里读出来,然后计数累加。 innodb由于多版本并发控制机制,同一时刻不同回话拿到的结果可能都不相同,所以不能直接将总行数存储在磁盘上。 比如同一时刻执行了三个会话 : A会话:  sele...