我是否需要将 ALL 授予 PostgreSQL 9.3 数据库中 table 的所有者?
Do I need to GRANT ALL to the OWNER of a table in a PostgreSQL 9.3 Database?
查看 pgAdmin 中的一些 table,我可以看到 table 定义包含以下语句
ALTER TABLE table_name
OWNER TO user_name;
GRANT ALL ON TABLE table_name TO user_name;
同数据库中的其他table省略了第二个GRANT ALL
语句,我怀疑它是多余的,因为user_name
已经是[的OWNER
=15=].
那么,在这种情况下,GRANT ALL
是多余的吗?如果是,我是否可以删除它的定义(从 table_name
> 属性 > 权限选项卡)?
谢谢
可能不会,但请参阅下文。
所有者默认拥有 table 的全部权利,请注意他们也可以授予自己的 table 权利。这独立于授予 public 的任何权利。参见:
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=>
因此,除非您已经撤销了您不需要授予它们的权限。
查看 pgAdmin 中的一些 table,我可以看到 table 定义包含以下语句
ALTER TABLE table_name
OWNER TO user_name;
GRANT ALL ON TABLE table_name TO user_name;
同数据库中的其他table省略了第二个GRANT ALL
语句,我怀疑它是多余的,因为user_name
已经是[的OWNER
=15=].
那么,在这种情况下,GRANT ALL
是多余的吗?如果是,我是否可以删除它的定义(从 table_name
> 属性 > 权限选项卡)?
谢谢
可能不会,但请参阅下文。
所有者默认拥有 table 的全部权利,请注意他们也可以授予自己的 table 权利。这独立于授予 public 的任何权利。参见:
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=>
因此,除非您已经撤销了您不需要授予它们的权限。