Отображать привилегии доступа по умолчанию для отношений, последовательностей и функций в Postgres

После изменения привилегий по умолчанию для объекта базы данных Postgres, как вы можете их просмотреть?

Например, если вы предоставляете все привилегии role_name для всех таблиц, созданных в схеме schema_name:

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

Ответ 1

Использование 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 = функция.

Эти права доступа предназначены только для вновь созданных объектов в пространстве имен схемы.

Ответ 2

Использование интерактивного терминала 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

Ответ 3

Если вы присоедините pg_default_act к pg_namespace, вы увидите только те привилегии по умолчанию, которые предоставляются в схеме.