7

您能否告诉我如何使用 psql 控制台检查函数的权限,但又不会被源代码和描述淹没(例如使用 \df+ 时)。

4

2 回答 2

6

对于更简单的查询,请使用:

SELECT proacl FROM pg_proc WHERE proname='FUNCTION-NAME';

结果是这样的:

                           proacl                       
----------------------------------------------------
 {=X/postgres,postgres=X/postgres,test1=X/postgres}
(1 row)

这表明test1用户也可以访问此功能。

有关更多详细信息,请参阅psql邮件列表中的讨论:psql 缺少功能:显示功能权限

于 2015-08-19T10:43:05.240 回答
1

您可以查询系统表:

SELECT proname, rolname
  FROM pg_proc pr,
       pg_type tp,
       pg_authid id
 WHERE proowner = id.oid
   AND tp.oid = pr.prorettype
   AND pr.proisagg = FALSE
   AND tp.typname <> 'trigger'
   AND pr.pronamespace IN (
       SELECT oid
         FROM pg_namespace
        WHERE nspname NOT LIKE 'pg_%'
          AND nspname != 'information_schema'
);
于 2010-06-11T12:46:43.690 回答