PostgreSQL 8.2.3 中文文档
后退快退章18. 数据库角色和权限快进前进

18.3. 权限

在创建对象的时候,它会被赋予一个所有者。通常所有者就是执行创建语句的角色。对于大多数类型的对象,初始状态是只有所有者(或者超级用户)可以对该对象做任何事情。要允许其它用户使用这个对象,必须赋予相应的权限。系统里面有好几种不同类型的权限: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 命令给这个对象赋予一个新的所有者。超级用户总是能做这件事;普通的角色只能是在他们目前是该对象的所有者(或者是所有角色的成员)并且是新的所有角色的成员的情况下才能做这个事情。


后退首页前进
角色属性上一级角色成员