设为首页 收藏本站
查看: 812|回复: 0

[经验分享] oracle 授权

[复制链接]

尚未签到

发表于 2018-9-23 09:13:02 | 显示全部楼层 |阅读模式
注意
  REVOKE 命令用于删除访问权限。
  如果非对象所有者企图在对象上 GRANT 权限,而该用户没有该对象上指定的权限,那么命令将立即失败。只要有某些可用的权限,该命令就会继续,但是它只授予那些该用户有授权选项的权限。如果没有可用的授权选项,那么 GRANT ALL PRIVILEGES 形式将发出一个警告信息,其它命令形式将发出在命令中提到的、但是没有授权选项的那些权限相关的警告信息。这些语句原则上也适用于对象所有者,但是因为所有者总是被认为拥有所有授权选项,所以这种情况永远不会发生在所有者身上。
  要注意数据库超级用户可以访问所有对象,而不会受对象的权限设置影响。这个特点类似 Unix 系统的 root 的权限。和 root 一样,除了必要的情况,总是以超级用户身份进行操作是不明智的做法。
  如果一个超级用户选择发出一个 GRANT 或 REVOKE 命令,那么这条命令将是以被影响对象的所有者的形式执行的。特别是,通过这种方法赋与的权限将显得好像是由对象所有者赋与的。对于角色成员关系,成员关系的赋与就会像是通过包含角色自己赋与的一样。
  GRANT 和 REVOKE 也可以不由被影响对象的所有者来执行,而是由拥有该对象的角色的一个成员来执行,或者是一个在该对象上持有 WITH GRANT OPTION 权限的角色的成员。在这种情况下,该权限将被纪录为是由实际拥有该对象或者持有 WITH GRANT OPTION 权限的对象赋与的。比如,如果表 t1 被角色 g1 拥有,并且 u1 是 g1 的一个成员,然后 u1 可以把 t1 的权限赋予 u2 ,但是这些权限将表现为是由 g1 直接赋予的。任何 g1 角色的成员都可以在之后撤销这些权限。
  如果执行 GRANT 的角色所持有的所需权限是通过角色成员关系间接获得的,那么究竟是那个角色将被纪录为赋予权限的角色就是未知的。在这种情况下,最好的方法是使用 SET ROLE 成为你想执行 GRANT 命令的指定角色。
  在表上赋予的权限不会自动传播到该表使用的序列上,包括 SERIAL 字段上的序列。必须单独设置序列的权限。
  目前,PostgreSQL 不支持给一个表的独立字段进行权限赋予和撤销的操作,一个绕开的办法是创建一个拥有那几行的视图然后给那个视图赋予权限。
  使用 psql 的 \z 命令获取在现有对象上的与权限有关的信息。
  

  
=> \z mytable
  Access privileges for database "lusitania"
  Schema |  Name   | Type  |                     Access privileges
  --------+---------+-------+-----------------------------------------------------------
  public | mytable | table | {miriam=arwdxt/miriam,=r/miriam,"group todos=arw/miriam"}
  (1 row)
  

  \z 显示的条目解释如下:
  

  
=xxxx -- 赋予 PUBLIC 的权限
  uname=xxxx -- 赋予一个用户的权限
  group gname=xxxx -- 赋予一个组的权限
  r -- SELECT ("读")
  w -- UPDATE ("写")
  a -- INSERT ("追加")
  d -- DELETE
  x -- REFERENCES
  t -- TRIGGER
  X -- EXECUTE
  U -- USAGE
  C -- CREATE
  c -- CONNECT
  T -- TEMPORARY
  arwdxt -- ALL PRIVILEGES (用于表)
  * -- 给前面权限的授权选项
  /yyyy -- 授出这个权限的用户
  

  用户 miriam 在建完 mytable 表之后再做下面的语句,就可以得到上面例子的结果
  

  
GRANT SELECT ON mytable TO PUBLIC;
  GRANT SELECT, UPDATE, INSERT ON mytable TO GROUP todos;
  

  如果一个给定的对象的"Access privileges字段是空的,这意味着该对象有缺省权限(也就是说,它的权限字段是 NULL)。缺省权限总是包括所有者的所有权限,以及根据对象的不同,可能包含一些给 PUBLIC 的权限。对象上第一个 GRANT 或 REVOKE 将实例化这个缺省权限(比如,产生 {miriam=arwdxt/miriam}) 然后根据每次特定的需求修改它。
  请注意所有者的隐含授权选项没有在显示出来的访问权限里标记出来。只有在授权选项明确地授予某人之后,才会显示一个 *



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-600132-1-1.html 上篇帖子: oracle rownum再谈 下篇帖子: Oracle 角色权限表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表