历史版本。 PostgreSQL 7.4 已结束支持。 请参阅 当前版本手册.
5.7. 权限 #
当你创建一个数据库对象时,你就成为它的所有者。默认情况下,只有对象的所有者才能对对象做任何操作。为了让其他用户能够使用它,必须授予权限。(也有一些用户拥有超级用户权限。这些用户总是可以访问任何对象。)
注意
要更改表、索引、序列或视图的所有者,请使用ALTER TABLE命令。
有多种不同的权限:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE、USAGE 和 ALL PRIVILEGES。关于
PostgreSQL 支持的各种权限类型的完整信息,请参阅GRANT参考页。后面的各节和各章还会向你展示这些权限是如何使用的。
修改或销毁对象的权利始终只属于该对象的拥有者。
要分配权限,使用 GRANT 命令。因此,如果 joe 是一个已存在的用户,而
accounts 是一个已存在的表,更新该表的权限可以这样授予:
GRANT UPDATE ON accounts TO joe;
执行这条命令的用户必须是表的拥有者。要把权限授予一个组,使用
GRANT SELECT ON accounts TO GROUP staff;
特殊的“用户”名 PUBLIC 可用来把权限授予系统中的每个用户。在具体权限的位置写 ALL 表示将授予所有权限。
要收回权限,使用名字同样贴切的
REVOKE 命令:
REVOKE ALL ON accounts FROM PUBLIC;
表拥有者的特殊权限(即执行
DROP、GRANT、REVOKE 等的权利)总是隐含在拥有者身份中,不能被授予或收回。但表拥有者可以选择收回自己的普通权限,例如让自己和别人都只能对表进行只读访问。