gpt4 book ai didi

PostgreSQL 撤销 pg_catalog 表的权限

转载 作者:行者123 更新时间:2023-11-29 11:20:41 24 4
gpt4 key购买 nike

有没有一种方法可以撤销用户对目录对象(即 information_schema)和 PostgreSQL 表(即 pg_catalog)的权限?我已经尝试了几件事并搜索了网络。我没有任何运气。我读到的唯一有部分帮助的是我可能不想从系统表中删除“public”,以防用户定义的函数依赖于其中一个模式中的对象。下面的命令是我除了一张表之外还没有使用过的东西的一个小快照。

REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM PUBLIC; -- didn't work
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM public; -- didn't work
REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM user1; -- didn't work
REVOKE SELECT ON pg_catalog.pg_roles FROM user1; -- worked
REVOKE SELECT ON pg_catalog.pg_database FROM user1; -- didn't work

REVOKE ALL PRIVILEGES ON SCHEMA pg_catalog FROM g_users; -- didn't work
REVOKE SELECT ON pg_catalog.pg_database FROM g_users; -- didn't work

有什么想法吗?或者这是不可能的?谢谢...

张国荣

最佳答案

让我帮你解决这个问题:

  • 1st:因为pg_catalog 由 super 用户postgres 所有,所以确保您使用此角色登录到服务器: pg_catalog schema permission

  • 第二:确保您连接到需要GRANT/REVOKE 权限的正确 数据库。 GRANT/REVOKE 仅影响您连接到的当前 数据库。这意味着在您使用 super 用户帐户登录后,发出:\c [the db] 连接到该数据库,shell 将更改为:[the db]=>

  • 3rd:pg_catalog 中的表默认授予 SELECT 给 PUBLIC:tables in pg_catalog .因此,您必须运行 REVOKE SELECT FROM PUBLIC,然后将 GRANT SELECT 授予适当的用户:

    REVOKE SELECT ON ALL TABLES IN SCHEMA pg_catalog FROM PUBLIC;

    GRANT SELECT ON TABLE [table] TO [user];

    对于数据库中的列表表:pg_classpg_namespace

就是这样:)

关于PostgreSQL 撤销 pg_catalog 表的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20554771/

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