选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

5.6. 权限 #

创建数据库对象时,你就成为它的所有者。默认情况下,只有对象的所有者才能对该对象做任何操作。为了让其他用户能使用它,必须授予权限。(不过,具有超级用户属性的用户总是可以访问任何对象。)

有不同种类的权限:SELECTINSERTUPDATEDELETETRUNCATEREFERENCESTRIGGERCREATECONNECTTEMPORARYEXECUTEUSAGE。适用于特定对象的权限取决于对象的类型(表、函数等)。关于PostgreSQL支持的不同权限类型的完整信息,请参阅GRANT参考页。后续的各节和各章还将展示这些权限是如何使用的。

修改或销毁对象的权利始终只属于该对象的拥有者。

注意

要更改表、索引、序列或视图的所有者,可使用ALTER TABLE命令。针对其他对象类型也有相应的ALTER命令。

分配权限使用GRANT命令。例如,如果joe是一个已有角色,并且accounts是一个已有表,则可以用以下命令授予更新该表的权限:

GRANT UPDATE ON accounts TO joe;

ALL代替某个具体权限,会授予与该对象类型相关的全部权限。

特殊的用户PUBLIC可用于向系统中的每个用户授予权限。此外,当数据库用户很多时,可以设置角色来协助管理权限 — 详见第 20 章

要撤销权限,使用名称贴切的REVOKE命令:

REVOKE ALL ON accounts FROM PUBLIC;

对象拥有者的特殊权限(即执行DROPGRANTREVOKE等操作的权利)始终隐含在拥有者身份中,不能授予或撤销。不过,对象拥有者可以选择撤销自己的普通权限,例如将表设为对自己和其他人都只读。

通常,只有对象的拥有者(或超级用户)可以授予或撤销对象上的权限。不过,也可以在授予权限时附带授权选项,使接收者有权进一步将该权限授予其他人。如果之后撤销了授权选项,所有从该接收者直接或经过授权链取得此权限的用户都会失去权限。详见GRANTREVOKE参考页。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。