【发布时间】:2021-12-08 22:55:08
【问题描述】:
我的角色需要能够创建新数据库(用于多个测试场景)。这个角色应该只有在自己创建的数据库中才有权限,这就是为什么我不想在模板数据库中设置必要的权限。
现在我想知道为什么数据库的所有者对 public-schema 也没有任何权利。我想,所有者在他自己的数据库中拥有所有权利。当然,他在自己创建的模式中这样做,但不是在 public-模式中。如何在 public-schema 中自动授予此角色 USAGE 和 CREATE,而不授予 GRANT-权限它?
我无法删除并重新创建 public-schema,如果没有额外权限对其他数据库也有影响,我无法执行 ALTER SCHEMA public OWNER TO CURRENT_USER。我需要一个可以在应用程序中自动运行的解决方案,最好不需要具有 GRANT 的超级用户的帮助。这可能吗?
编辑: 版本是 13.2。我已经撤销了 public 的默认权限,因为我在实例上有多个数据库,并且我希望帐户严格分开,一个帐户不应该对其他数据库拥有权限,而不是创建它的那个。当然,我可以保留 public 的默认权限,并且只限制对其他数据库的访问(CONNECT),但我没有这样做,这对我来说似乎有点无关紧要.
我认为,经过一些额外的研究和您宝贵的 cmets,这是不可能的。所以我看到了两种替代方法:
- 就像我说的,我不会撤销 public 的默认权限,而是限制或仅允许通过 CONNECT 访问数据库
- 如果需要,我会从模板中删除 public-schema 并重新创建它;那么数据库的所有者将拥有它的所有权利,我假设
【问题讨论】:
-
什么版本的 PostgreSQL?
-
请显示命令序列来证明这一点。