授予连接所有数据库的权限

5

我发现有一种方法可以授予数据库中所有表的选择权限,但我似乎找不到一种方法来授予所有数据库的连接权限。

我不能手动执行以下操作:

GRANT CONNECT ON DATABASE X TO readonly;
GRANT CONNECT ON DATABASE Y TO readonly;
GRANT CONNECT ON DATABASE Z TO readonly; 

由于我有很多数据库,因此需要类似以下内容的等价物:GRANT CONNECT ON DATABASE * TO readonly;

我希望授予组织中特定成员对只读用户在此数据库上的连接和只读(选择访问)权限。

祝好, Neil D.

2个回答

4

使用psql,你可以使用\gexec

SELECT format('GRANT CONNECT ON DATABASE %I TO readonly;', datname) FROM pg_database \gexec

\gexec 将查询结果的每一行解释为一个SQL语句并执行。


对于初学者来说,稍微解释一下这个查询将会很有帮助。 - AATHITH RAJENDRAN
@AATHITHRAJENDRAN 我已经添加了一个解释。但是在 psql 文档中很容易找到。 - Laurenz Albe
很酷,你真好。 - AATHITH RAJENDRAN

0

对于pg 14

GRANT pg_read_all_data TO your_user;

然后它可以连接到所有数据库,以只读方式。

提示:

  • 似乎用户仍然可以在public模式下为自己创建表,但不能写其他用户拥有的现有表。

假设 pg_read_all_data 是一个可用的角色。 - Draculater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接