Отображать привилегии доступа по умолчанию для отношений, последовательностей и функций в 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
, вы увидите только те привилегии по умолчанию, которые предоставляются в схеме.