postgres でオブジェクトに付与されたすべての GRANTS を照会するにはどうすればよいですか?
たとえば、テーブル「mytable」があります。
GRANT SELECT, INSERT ON mytable TO user1
GRANT UPDATE ON mytable TO user2
私は私に与える何かが必要です:
user1: SELECT, INSERT
user2: UPDATE
postgres でオブジェクトに付与されたすべての GRANTS を照会するにはどうすればよいですか?
たとえば、テーブル「mytable」があります。
GRANT SELECT, INSERT ON mytable TO user1
GRANT UPDATE ON mytable TO user2
私は私に与える何かが必要です:
user1: SELECT, INSERT
user2: UPDATE
私はすでにそれを見つけました:
SELECT grantee, privilege_type
FROM information_schema.role_table_grants
WHERE table_name='mytable'
\z mytable
from psqlは、テーブルからのすべての許可を提供しますが、その後、個々のユーザーごとに分割する必要があります。
ユーザーごとに 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)