zoukankan      html  css  js  c++  java
  • oracle grant授权的理解(转)

    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

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/Veakey/p/2704592.html
Copyright © 2011-2022 走看看