关于 postgresql:db owner 如何授予对 postgres 中其他用户表的选择权限?

How can db owner grant select permission on other users table in postgres?

所有。
我对 postgresql 有以下问题。

我有一个数据库"dwh",其架构为"sa"。

我有一个用户"dwa",他是数据库"dwh"的所有者。

1
2
3
SELECT pg_get_userbyid(datdba) dbowner
FROM pg_database WHERE datname='dwh';
-- dwa

另一个用户 "user1" 在模式 "sa" 中创建了表 "table1"。

现在,当我尝试(作为"dwa")授予从 table1 中选择的权限时,我收到一个错误:

1
GRANT SELECT ON sa.table1 TO dwa;

[42501] ERROR: permission denied for table table1

用户 "dwa" (db owner) 是否可以授予从 table1 中选择的权限以及如何做到这一点?


要获得对象的 GRANT 权限,您需要满足以下三个条件中的至少一个:

  • 你是超级用户

  • 您拥有该对象(或者是拥有该对象的角色的成员)

  • 您已被授予特权 WITH GRANT OPTION

数据库的所有权不会赋予您对数据库内对象的任何权限!


您可以尝试以模式 sa 和表 table1user1 所有者身份运行:

1
2
GRANT usage ON schema sa TO dwa;
GRANT ALL privileges ON ALL TABLES IN schema sa TO dwa WITH GRANT OPTION;

但是授予自己特权是不寻常的。