gpt4 book ai didi

postgresql - 撤销角色对 postgres 数据库的访问

转载 作者:行者123 更新时间:2023-11-29 11:26:44 25 4
gpt4 key购买 nike

我为某个用户创建了一个单独的角色“newrole”和新模式“newschema”,它们应该只执行一些存储的功能。我已设法撤销对当前数据库的模式“public”的访问权限。

以“newrole”身份登录我仍然可以像这样访问 postgres 数据库:

SELECT * FROM pg_user

我想撤销对 postgres 数据库的所有访问权限,并尝试了以下方法无效:

REVOKE ALL ON DATABASE postgres FROM newrole

当以 newrole 身份登录时,我仍然可以读取 postgres 数据库。

如何撤销对 postgres 管理数据库的任何访问权限?

我已经搜索了很长时间,但没有找到任何关于访问 postgres 管理数据库的信息。

TIA,

最佳答案

此问题与数据库postgres无关。相反,您想操作当前数据库的目录。每个数据库都有关于架构 pg_catalog 中所有对象的信息目录,并且在架构 information_schema 中以符合标准的形式存在,因此您应该限制相关角色对这些对象的访问还有 public 角色,因为每个角色也是该角色的成员:

REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM newrole;
REVOKE ALL PRIVILEGES ON SCHEMA information_schema FROM public;

但是,系统并不总是遵守这种全面的限制,目录的存在是有原因的,并且在数据库中提供了重要的功能。特定功能可能仍会执行。

一般来说,除非您真的知道自己在做什么,否则您不想摆弄目录。

关于postgresql - 撤销角色对 postgres 数据库的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com