gpt4 book ai didi

postgresql - 什么 PostgreSQL 查询或 View 可以确定谁设置了用户权限?

转载 作者:行者123 更新时间:2023-11-29 13:06:08 35 4
gpt4 key购买 nike

我正在尝试撤销数据库用户的权限,但似乎只能由授予权限的用户撤销权限。这里有线程讨论这个问题。 http://archives.postgresql.org/pgsql-bugs/2007-05/msg00234.php

该线程可以追溯到 2007 年,我不太确定它是否被视为错误以及该问题是否仍然存在于我正在使用的 PostgreSQL 8.4 中。

是否有可以显示该信息的查询或 View ?这样我就可以使用 set session authorization 并撤销它。

最佳答案

PostgreSQL 8.4 已过时。查看versioning policy了解详情。但由于它是 SQL 的标准行为(如 Tom Lane 在您提供的链接讨论中所述),它不太可能改变。

权限与相应的对象一起存储在系统目录中。例如,对于一个表:

SELECT n.nspname, c.relname, c.relacl
FROM pg_catalog.pg_class c
JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.oid = 'myschema.mytbl'::regclass -- your tablename here

会产生类似的东西:

 nspname  | relname |                  relacl
----------+---------+---------------------------------------------
myschema | mytbl | {postgres=arwdDxt/postgres,fuser=r/fadmin}

斜杠后的角色名是授予者。要撤销,作为用户 fadmin(或任何 super 用户):

REVOKE SELECT ON TABLE myschema.mytbl FROM fuser;

其他系统表中也有类似的*acl列。 pg_namespace 用于模式等。参见 list of system tables in the manual.


更简单的方法是使用 pgAdmin 并在左侧的对象浏览器中选择一个对象。 ACL 将显示在右上角的属性 Pane 中。

关于postgresql - 什么 PostgreSQL 查询或 View 可以确定谁设置了用户权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173878/

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