Из CREATE ROLE
документации :
Обратите внимание, что роли определены на уровне кластера базы данных и поэтому действительны во всех базах данных в кластере.
Так как pg_dump
дамп единственной базы данных, вы не можете извлечь роли с этой утилитой. Предложенная pg_dumpall --roles-only
вами команда выполнит эту работу, однако вам может потребоваться отфильтровать ее выходные данные, чтобы в новом кластере были созданы только нужные роли.
Роли хранятся в pg_authid
каталоге, который физически хранится в data/global/
подпапке установки PostgreSQL, вместе с другими таблицами кластера. Вы можете запросить содержимое pg_authid
через pg_roles
представление.
ПРИМЕЧАНИЕ : вам понадобятся права суперпользователя для снятия ролей. В противном случае, вы получите разрешение на Отказано SELECT
на pg_authid
- и даже тогда , когда суперпользователь предоставляет SELECT
права, вы получите ту же ошибку. В этом случае, однако, вы можете составить список ролей, pg_authid
напрямую запросив COPY
его в файле, и применить некоторую магию для создания необходимых операторов CREATE ROLE
и ALTER ROLE
операторов.