【问题标题】:Do I need to GRANT ALL to the OWNER of a table in a PostgreSQL 9.3 Database?我需要 GRANT ALL 给 PostgreSQL 9.3 数据库中表的所有者吗?
【发布时间】:2016-09-08 01:34:02
【问题描述】:
查看pgAdmin中的一些表,我可以看到具有以下语句的表定义
ALTER TABLE table_name
OWNER TO user_name;
GRANT ALL ON TABLE table_name TO user_name;
同一数据库中的其他表省略了第二条GRANT ALL 语句,我怀疑它是多余的,因为user_name 已经是table_name 的OWNER。
那么,在这种情况下,GRANT ALL 是多余的吗?如果是,我是否可以删除它的定义(从table_name > 属性 > 权限选项卡)?
谢谢
【问题讨论】:
标签:
postgresql
postgresql-9.3
privileges
user-permissions
【解决方案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=>
因此,除非您已经撤销了您不需要授予它们的权限。