111

postgres でオブジェクトに付与されたすべての GRANTS を照会するにはどうすればよいですか?

たとえば、テーブル「mytable」があります。

GRANT SELECT, INSERT ON mytable TO user1
GRANT UPDATE ON mytable TO user2 

私は私に与える何かが必要です:

user1: SELECT, INSERT
user2: UPDATE
4

7 に答える 7

129

私はすでにそれを見つけました:

SELECT grantee, privilege_type 
FROM information_schema.role_table_grants 
WHERE table_name='mytable'
于 2011-09-07T15:40:41.533 に答える
105

\z mytablefrom psqlは、テーブルからのすべての許可を提供しますが、その後、個々のユーザーごとに分割する必要があります。

于 2011-09-07T15:32:25.563 に答える
33

ユーザーごとに 1 行が本当に必要な場合は、被付与者ごとにグループ化できます (string_agg には PG9+ が必要です)。

SELECT grantee, string_agg(privilege_type, ', ') AS privileges
FROM information_schema.role_table_grants 
WHERE table_name='mytable'   
GROUP BY grantee;

これは次のようなものを出力するはずです:

 grantee |   privileges   
---------+----------------
 user1   | INSERT, SELECT
 user2   | UPDATE
(2 rows)
于 2014-06-10T15:39:22.407 に答える