返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

18.3. 权限

发布于 2019-09-30 03:07:15 字数 1003 浏览 994 评论 0 收藏 0

在创建对象的时候,它会被赋予一个所有者。通常所有者就是执行创建语句的角色。对于大多数类型的对象,初始状态是只有所有者(或者超级用户)可以对该对象做任何事情。要允许其它用户使用这个对象,必须赋予相应的权限。系统里面有好几种不同类型的权限:SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE 。有关 PostgreSQL 支持的不同类型权限的更多信息,请参阅 GRANT 参考页。

使用 GRANT 命令赋予权限。如果 joe 是一个现有的角色,而 accounts 是一个现有的表,那么可以用下面的命令更新表的权限:

GRANT UPDATE ON accounts TO joe;

我们可以用特殊的名字 PUBLIC 把对象的权限赋予系统中的所有角色。在权限声明的位置写上 ALL 表示把适用于该对象的所有权限都赋予目标角色。

要撤销权限,使用 REVOKE 命令:

REVOKE ALL ON accounts FROM PUBLIC;

对象的所有者是一个特殊的权限(也就是修改和删除对象的权限),总是隐含地属于所有者,不能赋予或者删除。但是所有者可以选择撤销他自己拥有的普通权限,比如,把一个表做成对自己是只读的或者其它什么。

只要对象的类型合适,我们就可以用一个 ALTER 命令给这个对象赋予一个新的所有者。超级用户总是能做这件事;普通的角色只能是在他们目前是该对象的所有者(或者是所有角色的成员)并且是新的所有角色的成员的情况下才能做这个事情。

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

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

发布评论

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