博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL权限讲解
阅读量:5231 次
发布时间:2019-06-14

本文共 981 字,大约阅读时间需要 3 分钟。

当创建一个数据库对象时,它就被赋予了所有者。这个所有者通常是执行创建语句的角色。对大多数类型的对象,初始状态只有其所有者(或者超级管理员)可以对它做任何事情。要允许其他角色使用它,必须要经过权限授予。

有好多种不同的权限:SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, 和 USAGE 。适用于特定对象的权限因对象类型(表/函数等)不同而不同。有关PostgreSQL所支持的不同类型的权限的完整信息,请参考GRANT的手册页。下面的章节将为你展示如何利用这些权限。

修改或者删除一个对象的权限永远是所有者独有的权限。

一个对象可以用ALTER命令以适当的对象类型赋予新的所有者,例如ALTER TABLE。超级用户总是可以这么做;普通用户只有在他同时是当前对象的所有者(或者所有角色的一个成员)和新所有者角色的成员时可以这样做。

使用GRANT命令赋予权限。例如,如果joe是一个已经存在的用户,而accounts是一个已经存在的表,更新表的权限可以用下面的命令赋予:

GRANT UPDATE ON accounts TO joe;

在权限的位置写上ALL则赋予所有与该对象类型相关的权限。

名为PUBLIC的特殊"用户"可以用于将权限赋予系统中的所有用户。另外,还可以使用"组"角色来帮助管理一群用户的权限。

可以使用REVOKE命令撤销权限:

REVOKE ALL ON accounts FROM PUBLIC;

对象所有者的特殊权限(也就是DROP, GRANT, REVOKE 等权限)总是隐含地属于所有者,并且不能赋予或者撤销。但是对象所有者可以选择撤销自己的普通权限,比如把一个表做成对自己和别人都是只读的。

最初,只有对象所有者(或者超级用户)可以赋予或者撤销对象的权限。但是,我们可以赋予一个"with grant option"权限,这样就允许接受权限的人将该权限转授他人。如果授权选项后来被撤销,那么所有那些从这个接受者接受了权限的用户(直接或间级)都将失去该权限。

参考资料

转载于:https://www.cnblogs.com/wolaiye320/p/5582248.html

你可能感兴趣的文章
iOS开发——高级篇——多线程的安全隐患
查看>>
flask 文件上传
查看>>
洛谷 P2055 [ ZJOI 2009 ] 假期的宿舍 —— 二分图匹配
查看>>
归并排序
查看>>
matlab rand(3,5)
查看>>
osgText::Text osg字体
查看>>
双色球算法实现
查看>>
winform,WPF 释放内存垃圾,减少资源占用方法
查看>>
j2ee监听器的实现及配置方法
查看>>
自动化测试LoadRunner
查看>>
小程序for循环绑定每组数据的id,并通过id获取里面某个数组的值的方法
查看>>
DNS & DDNS
查看>>
nginx(1、正向代理)
查看>>
mongodb( 实现join)
查看>>
介绍几个C#正则表达式工具
查看>>
UESTC 1634 去年春恨却来时,落花人独立,微雨燕双飞
查看>>
C语言从文件读数据
查看>>
数据结构之基本概念和术语
查看>>
iframe中在父窗口打开子页面
查看>>
HDU 1671 Phone List(Trie的应用与内存释放)
查看>>