返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

5.6. 权限

发布于 2019-09-30 03:05:52 字数 1346 浏览 868 评论 0 收藏 0

如果你创建了一个数据库对象,那么你就成为它的所有者。缺省时,只有对象的所有者可以在对象上做任何事情。为了允许其它用户使用它,我们必须赋予他们权限。不过超级用户总是可以操作任何对象。

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

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

【注意】要改变一个表、索引、序列、或者视图的所有者,使用 ALTER TABLE 命令,以及对应其它对象类型的 ALTER 命令。

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

GRANT UPDATE ON accounts TO joe;

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

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

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

REVOKE ALL ON accounts FROM PUBLIC;

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文