我是PostgreSQL的新手,希望能找到这样的可能性。
有两个超级用户,'postgres‘(这是来自PostgreSQL的默认超级用户)和'super2’。
超级用户'super2‘创建了一个名为“电影”的新数据库,并成为它的所有者。
是否可以限制超级用户'postgres‘访问数据库的“电影”,这样只有超级用户'super2’才能访问它,因为他是数据库的所有者。
如果有可能的话,那又如何实现呢?
发布于 2013-07-12 08:04:04
法郎是完全正确的。超级用户就是这个意思。他们都很强大。他们可以做任何事情,包括将额外的代码加载到数据库中,直接修改磁盘上的表,等等。有关更多信息,请参见CREATE ROLE和关于客户端身份验证的文档。
如果你不信任他们,就不要给他们超级用户的权利。在这种情况下,听起来你应该做一个CREATE DATABASE movies WITH OWNER the_other_user,然后给他们一个正常的、非超级用户的登录。或者,如果他们需要创建自己的数据库,您可以授予他们CREATEDB权限。
限制超级用户的唯一方法是直接更改PostgreSQL中的C代码。即使这样,您也可能在浪费时间,因为一个坚定的用户可以绕过限制,如ProcessUtility_hook过滤器,如果他们有超级用户的访问权。
删除他们的超级用户访问权限。除非他们有远见,借你的系统,让他们重新获得访问(不太可能,而不是琐碎),你应该是好的。
ALTER USER the_user WITH NOSUPERUSER;如果希望CREATEDB权限具有创建数据库的能力,则可以添加它们。
发布于 2013-07-12 02:41:56
Postgres是一个覆盖所有访问限制的超级用户,我认为限制超级用户“postgres”访问数据库的“电影”不是所有者。
发布于 2013-07-12 22:41:47
你已经被告知你不能阻止一个超级用户。您必须有更高的目标:使用initdb创建另一个数据库集群(它将在一个单独的端口上运行)。
用户在集群范围内是有效的。一个集群中的超级用户在另一个集群中没有“管辖权”。
https://dba.stackexchange.com/questions/46191
复制相似问题