Использование psqlмета-команд:
https://www.postgresql.org/docs/current/static/app-psql.html
Переход по странице с помощью Ctrl + F дает:
\ddp [ pattern ]
Перечисляет настройки привилегий доступа по умолчанию.
\dp [ pattern ] Перечисляет таблицы, представления и последовательности с соответствующими привилегиями доступа.
\l[+] [ pattern ] Перечислите базы данных на сервере и покажите .... права доступа.
Также упомянуто выше, но не найдено со словом «привилегии» на странице руководства:
\du+для ролей с логином и \dg+для ролей без - будет файл, в "Member of"котором вы найдете роли, предоставленные ролям.
Я намеренно пропускаю здесь функциональные и языковые привилегии, которые в psqlруководстве рассматриваются как едва манипулируемые (и если вы используете эти привилегии, вы не придете сюда за советом). То же самое для пользовательских типов, доменов и т. д. - использование «+» после мета-команды покажет вам привилегии, если применимо.
Немного экстремальный способ проверки привилегий - удаление пользователя в транзакции, например:
s=# begin; drop user x;
BEGIN
Time: 0.124 ms
ERROR: role "x" cannot be dropped because some objects depend on it
DETAIL: privileges for type "SO dT"
privileges for sequence so
privileges for schema bin
privileges for table xx
privileges for table "csTest"
privileges for table tmp_x
privileges for table s1
privileges for table test
Time: 0.211 ms
s=# rollback;
ROLLBACK
Time: 0.150 ms
Когда список длиннее N (по крайней мере, в 9.3), предупреждение со списком привилегий свернуто, но вы все равно можете найти его полным в журналах ...
\z myTableидеально подходит для того, чтобы убедиться, что вы успешно предоставили доступ кому-то, и избегать выглядеть как идиот, когда говорите: «Хорошо, это работает сейчас, это не так? »