Usando psql
metacomandos:
https://www.postgresql.org/docs/current/static/app-psql.html
Revisar la página con Ctrl + F da:
\ddp [ pattern ]
Enumera la configuración predeterminada de privilegios de acceso.
\dp [ pattern ]
Enumera tablas, vistas y secuencias con sus privilegios de acceso asociados.
\l[+] [ pattern ]
Listar las bases de datos en el servidor y mostrar .... privilegios de acceso.
También se menciona anteriormente, pero no se encuentra con la palabra "privilegios" en la página del manual:
\du+
para roles con inicio de sesión y \dg+
para roles sin: tendrá un archivo "Member of"
donde encontrará roles otorgados a roles.
Deliberadamente omito los privilegios de función y lenguaje aquí, que se encuentran en el psql
manual como apenas manipulados (y si usa esos privilegios, no vendrá aquí para recibir un consejo). lo mismo para los tipos definidos por el usuario, dominios, etc., usando "+" después del metacomando le mostrará privilegios si corresponde.
Una pequeña forma extrema de verificar los privilegios es dejar caer al usuario en la transacción, por ejemplo:
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
Cuando la lista es más larga que N, (al menos en 9.3), la advertencia con la lista de privilegios se contrae, pero aún puede encontrarla llena en los registros ...
\z myTable
es perfecto para garantizar que hayas otorgado acceso a alguien con éxito y evitar parecer un idiota cuando dices "¿está bien, funciona ahora? ¿no? "