web-dev-qa-db-ja.com

Postgresのリレーション、シーケンス、関数のデフォルトのアクセス権限を表示する

Postgresデータベースオブジェクトのデフォルトの権限を変更した後、それらをどのように表示できますか?

たとえば、スキーマrole_nameで作成されたすべてのテーブルに対してschema_nameにすべての特権を付与した場合:

ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL ON TABLES TO role_name;
19
Clint Pachl

SQLクエリの使用

SELECT 
  nspname,         -- schema name
  defaclobjtype,   -- object type
  defaclacl        -- default access privileges
FROM pg_default_acl a JOIN pg_namespace b ON a.defaclnamespace=b.oid;

ここで、defaclobjtypeの値は r =関係(テーブル、ビュー)、S =シーケンス、f =関数 です。

これらのアクセス権は、スキーマ名前空間内に新しく作成されたオブジェクトに対してのみ使用されます。

18
Clint Pachl

Psql(1)インタラクティブターミナルの使用

少なくとも最近のPostgresバージョンでは、別の方法があります。
使用 \ddpコマンド

               Default access privileges
     Owner      | Schema |   Type   | Access privileges 
----------------+--------+----------+-------------------
 role_x         |        | function | =X/role_x
 role_x         |        | sequence | 
 role_x         |        | table    | 
 role_x         |        | type     | =U/role_x

詳細については、こちらの「メモ」セクションをご覧ください。
http://www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html

30
Zyphrax