我是否需要将所有权限授予PostgreSQL 9.3数据库中的表的所有者?

问题描述:

综观pgAdmin的一些表格,我可以看到表定义与下面的语句我是否需要将所有权限授予PostgreSQL 9.3数据库中的表的所有者?

ALTER TABLE table_name 
    OWNER TO user_name; 
GRANT ALL ON TABLE table_name TO user_name; 

在同一数据库中的其他表省略了第二个GRANT ALL声明,我怀疑它是多余的,因为user_name已经是OWNERtable_name

因此,在这种情况下,GRANT ALL是多余的,如果是的话,我可以删除它的定义(从table_name> Properties> Privileges标签)?

由于

大概不会见下文。

默认情况下,所有者对表拥有完整的权利,并且注意他们也可以在他们自己的表上授予权限。这与公共权利无关。请参阅:

chris=> create table footest(id int); 
CREATE TABLE 
chris=> revoke all on footest from public; 
REVOKE 
chris=> insert into footest values (1); 
INSERT 0 1 
chris=> revoke all on footest from chris; 
REVOKE 
chris=> insert into footest values (1); 
ERROR: permission denied for relation footest 
chris=> grant all on footest to chris; 
GRANT 
chris=> 

所以,除非你已经撤销的权限,你不需要向他们发放。

1)“的对象可以被分配到一个新的所有者与适当的种类的对象的ALTER命令,例如ALTER TABLE 超级用户可以总是这样做; 普通角色只能做它,如果它们都是对象的当前所有者(或所属角色的成员)新的所有的成员角色“。

2)“写入所有代替特定特权授予与对象类型相关的所有特权。”

所以简而言之,它取决于上面提到的用户类型。

可以GRANT具体特权 EG 使用子集GRANT的选择等。格兰特的更多信息可以在第二链路PostgreSQL的GRANT找到 - 定义访问权限

所有最优秀的

参考一5.6. Postgresql Privileges

参考文献2:Postgresql GRANT -- define access privileges