Использование 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
идеально подходит для того, чтобы убедиться, что вы успешно предоставили доступ кому-то, и избегать выглядеть как идиот, когда говорите: «Хорошо, это работает сейчас, это не так? »