【问题标题】:Grant connect to all DATABASES授予连接到所有数据库
【发布时间】:2022-02-01 14:57:17
【问题描述】:

我已经看到有一种方法可以将选择授予数据库中的所有表,但是我似乎找不到授予连接到所有数据库的方法。

我不能手动做:

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;

我的总体希望是向我组织的某些成员授予此数据库的只读用户的连接和只读(选择访问)权限。

最好的问候, 尼尔 D.

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    使用psql,您可以使用\gexec

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

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

    【讨论】:

    • 对此将查询的一点解释将对初学者有所帮助。谢谢。
    • @AATHITHRAJENDRAN 我已经添加了解释。但这在psql 文档中很容易找到。
    • 酷,你真好。
    【解决方案2】:

    14

    GRANT pg_read_all_data TO your_user;

    然后它可以连接到所有数据库,作为只读

    提示

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

    【讨论】:

      猜你喜欢
      • 2014-08-16
      • 2011-06-28
      • 2019-12-28
      • 1970-01-01
      • 2021-06-20
      • 2018-12-03
      • 1970-01-01
      相关资源
      最近更新 更多