3
請問如何使用psql控制檯檢查對函數的權限,但不會被源代碼和描述(如使用\ df +)所覆蓋。如何在psql控制檯上檢查對函數的權限
請問如何使用psql控制檯檢查對函數的權限,但不會被源代碼和描述(如使用\ df +)所覆蓋。如何在psql控制檯上檢查對函數的權限
你可以查詢系統表:
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'
);
對於一個簡單的查詢,使用:
SELECT proacl FROM pg_proc WHERE proname='FUNCTION-NAME';
結果是這樣的:
proacl
----------------------------------------------------
{=X/postgres,postgres=X/postgres,test1=X/postgres}
(1 row)
這表明test1
用戶也有權訪問此功能。
欲瞭解更多詳情,請參閱關於psql
的郵件列表:psql missing feature: show permissions for functions的討論。