↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

GRANT

GRANT — 把访问权限授予一个用户、一个组或所有用户

大纲

GRANT privilege [, ...] ON object [, ...]
    TO { PUBLIC | GROUP group | username }
  

输入

privilege

可能的权限有:

SELECT

访问指定表/视图的所有列。

INSERT

向指定表的所有列插入数据。

UPDATE

更新指定表的所有列。

DELETE

从指定表中删除行。

RULE

在表/视图上定义规则(见 CREATE RULE 语句)。

ALL

授予所有权限。

object

要授予访问权限的对象的名称。可能的对象有:

  • table

  • view

  • sequence

PUBLIC

代表所有用户的简写形式。

GROUP group

被授予权限的一个组 group。

username

被授予权限的用户的名称。PUBLIC 是代表所有用户的简写形式。

输出

CHANGE

如果成功则返回此消息。

ERROR: ChangeAcl: class "object" not found

如果指定的对象不可用,或者无法把权限授予指定的组或用户,则返回此消息。

描述

GRANT允许对象的创建者把特定权限授予所有用户(PUBLIC)或某个用户或组。除非创建者在对象创建之后 GRANT 权限,除创建者之外的用户没有任何访问权限。

一旦用户拥有了对象上的某个权限,他就能够行使该权限。无需向对象的创建者 GRANT 权限,创建者自动持有所有权限,并且也可以删除对象。

注意

目前,在Postgres中要只对少数几个列授予权限,必须创建一个包含所需列的视图,然后把权限授予该视图。

使用psql \z获取现有对象上权限的更多信息:

	  Database    = lusitania
   +------------------+---------------------------------------------+
   |  Relation        |        Grant/Revoke Permissions             |
   +------------------+---------------------------------------------+
   | mytable          | {"=rw","miriam=arwR","group todos=rw"}      |
   +------------------+---------------------------------------------+
   Legend:
         uname=arwR -- privileges granted to a user
   group gname=arwR -- privileges granted to a GROUP
              =arwR -- privileges granted to PUBLIC

                  r -- SELECT
                  w -- UPDATE/DELETE
                  a -- INSERT
                  R -- RULE
               arwR -- ALL
    

参阅 REVOKE 语句来撤销访问权限。

用法

把表 films 上的插入权限授予所有用户:

GRANT INSERT ON films TO PUBLIC;
   

把视图 kinds 上的所有权限授予用户 manuel:

GRANT ALL ON kinds TO manuel;
   

兼容性

SQL92

SQL92的 GRANT 语法允许为表中的单个列设置权限,也允许设置把相同权限授予他人的权限:

GRANT privilege [, ...]
    ON object [ ( column [, ...] ) ] [, ...]
    TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
    

各字段与Postgres实现中的兼容,并有下列补充:

privilege

SQL92允许指定额外的权限:

SELECT

REFERENCES

允许在完整性约束中引用指定表/视图的部分或全部列。

USAGE

允许使用域、字符集、排序规则或转换。如果对象指定的不是表/视图,privilege 必须只指定 USAGE。

object

[ TABLE ] table

SQL92允许额外的无功能关键字TABLE。

CHARACTER SET

允许使用指定的字符集。

COLLATION

允许使用指定的排序序列。

TRANSLATION

允许使用指定的字符集转换。

DOMAIN

允许使用指定的域。

WITH GRANT OPTION

允许把相同的权限授予他人。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.