17.4. 权限

当创建一个数据库对象时,它属于一个用户。该用户就是执行创建命令的那位。 要改变一个表,索引,序列,或者视图的所有者,使用 ALTER TABLE 命令。 缺省时,只有所有者(或者超级用户)可以对该对象做任何事情。为了让别的用户也能用它,必须赋予那些用户权限

我们有以下几种权限:SELECT(读), INSERT(追加), UPDATE(写),DELETERULE(规则)REFERENCES(外键), TRIGGERCREATETEMPORARYEXECUTEUSAGE,和 ALL PRIVILEGES。 有关PostgreSQL所支持的权限的更多信息,请参阅 Part VI 里面的 GRANT 页获取更多详细的信息。 修改或者删除一个对象的权限总是只有该对象的所有者才有。 要赋予权限,必需使用 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;

表所有者的特殊权限(也就是说,做 DROPGRANTREVOKE 等等的权限)总是隐含给所有者的,并且不能赋予或者删除。 但是表所有者可以废除他的普通权限,比如给自己做一个只读的表,就象给别人做一样。