代码之家  ›  专栏  ›  技术社区  ›  Fomalhaut

如何对Postgres中的所有新表授予用户权限?

  •  2
  • Fomalhaut  · 技术社区  · 6 年前

    假设在Postgres9.6中有两个名为 user1 user2 . 我想授予 用户2 在由创建的任何新表上 用户1 对于所创建的表没有额外的显式grant命令。换句话说,我希望使以下命令正确工作:

    1. 授权给 用户2 ( 我不知道这里应该是什么! )
    2. CREATE TABLE t1 (id int) 用户1 )
    3. INSERT INTO t1 VALUES (5) 用户2 )

    请注意,我不应该在步骤2和步骤3之间进行任何许可。

    在步骤3中,我总是有错误:

    permission denied for relation t1
    

    我尝试过:

    GRANT ALL PRIVILEGES ON DATABASE test TO user2;
    

    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO user2;
    

    没有任何成功。

    我也试过:

    GRANT user1 TO user2
    

    它起了作用。但我不能把它当作解决办法,因为 用户1 可能具有太高的权限(例如,它可以 postgres )我不想和你分享 用户2 .

    1 回复  |  直到 6 年前
        1
  •  3
  •   Nick Barnes    6 年前

    default privileges

    ALTER DEFAULT PRIVILEGES
    FOR USER user1
    GRANT ALL ON TABLES TO user2