6.4. 权限

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

我们有以下几种权限:SELECT(读), INSERT(追加), UPDATE(写),DELETERULE(规则)REFERENCES(外键), TRIGGERCREATETEMPORARYEXECUTEUSAGE,和 ALL PRIVILEGES。 有关PostgreSQL所支持的权限的更多信息,请 参阅 PostgreSQL 7.3 参考手册 里面的 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 等等的权限)总是隐含给所有者的,并且不能赋予或者删除. 但是表所有者可以废除他的普通权限,比如给自己做一个只读的表,就象给 别人做一样.