首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL :限制(另一个)超级用户访问数据库

PostgreSQL :限制(另一个)超级用户访问数据库
EN

Database Administration用户
提问于 2013-07-12 02:00:09
回答 4查看 3.1K关注 0票数 2

我是PostgreSQL的新手,希望能找到这样的可能性。

有两个超级用户,'postgres‘(这是来自PostgreSQL的默认超级用户)和'super2’。

超级用户'super2‘创建了一个名为“电影”的新数据库,并成为它的所有者。

是否可以限制超级用户'postgres‘访问数据库的“电影”,这样只有超级用户'super2’才能访问它,因为他是数据库的所有者。

如果有可能的话,那又如何实现呢?

EN

回答 4

Database Administration用户

发布于 2013-07-12 08:04:04

法郎是完全正确的。超级用户就是这个意思。他们都很强大。他们可以做任何事情,包括将额外的代码加载到数据库中,直接修改磁盘上的表,等等。有关更多信息,请参见CREATE ROLE关于客户端身份验证的文档

如果你不信任他们,就不要给他们超级用户的权利。在这种情况下,听起来你应该做一个CREATE DATABASE movies WITH OWNER the_other_user,然后给他们一个正常的、非超级用户的登录。或者,如果他们需要创建自己的数据库,您可以授予他们CREATEDB权限。

限制超级用户的唯一方法是直接更改PostgreSQL中的C代码。即使这样,您也可能在浪费时间,因为一个坚定的用户可以绕过限制,如ProcessUtility_hook过滤器,如果他们有超级用户的访问权。

删除他们的超级用户访问权限。除非他们有远见,借你的系统,让他们重新获得访问(不太可能,而不是琐碎),你应该是好的。

代码语言:javascript
复制
ALTER USER the_user WITH NOSUPERUSER;

如果希望CREATEDB权限具有创建数据库的能力,则可以添加它们。

票数 5
EN

Database Administration用户

发布于 2013-07-12 02:41:56

Postgres是一个覆盖所有访问限制的超级用户,我认为限制超级用户“postgres”访问数据库的“电影”不是所有者。

票数 4
EN

Database Administration用户

发布于 2013-07-12 22:41:47

你已经被告知你不能阻止一个超级用户。您必须有更高的目标:使用initdb创建另一个数据库集群(它将在一个单独的端口上运行)。

用户在集群范围内是有效的。一个集群中的超级用户在另一个集群中没有“管辖权”。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/46191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档