查看pgAdmin中的一些表,可以看到具有以下语句的表定义

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>属性>特权选项卡)?
谢谢

最佳答案

可能不是,但请看下面。
默认情况下,所有者拥有对表的全部权限,并且注意,他们也可以授予对自己表的权限。这是独立于任何权利给予公众。见:

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=>

因此,除非您已经撤销了权限,否则不需要授予它们。

10-06 06:16