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

时间:2016-05-12 09:44:15

标签: postgresql postgresql-9.3 privileges user-permissions

查看pgAdmin中的一些表,我可以看到包含以下语句的表定义

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

同一数据库中的其他表省略了第二个GRANT ALL语句,我怀疑它是多余的,因为user_name已经是OWNER的{​​{1}}。

那么,table_name在这种情况下是多余的,如果是,我是否可以删除其定义(来自GRANT ALL>属性>权限标签)?

由于

1 个答案:

答案 0 :(得分:-1)

可能不是,但见下文。

默认情况下,所有者拥有该表的完全权限,并注意他们也可以在自己的表上授予权限。这与任何赋予公众的权利无关。参见:

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

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