¿Cuándo se enumeran los privilegios de acceso por \ l y cuándo no? Los privilegios de acceso enumerados por \ l pueden cambiar después de una concesión y revocar:
$ createuser -EP my_readonly
$ psql development
development=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------------------+----------+----------+-------------+-------------+-----------------------
development | vagrant | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 |
...
development=# grant usage on schema public to my_readonly;
development=# grant connect on database development to my_readonly;
development=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------------------+----------+----------+-------------+-------------+----------------------------
development | vagrant | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant +
| | | | | vagrant=CTc/vagrant +
| | | | | my_readonly=c/vagrant
...
development=# revoke connect on database development from my_readonly;
REVOKE
development=# revoke usage on schema public from my_readonly;
REVOKE
development=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------------------------+----------+----------+-------------+-------------+-----------------------
development | vagrant | UTF8 | en_GB.UTF-8 | en_GB.UTF-8 | =Tc/vagrant +
| | | | | vagrant=CTc/vagrant
¿Porqué es eso? ¿Qué estado cambió? Creo que la capacidad de conexión de my_readonly del usuario no cambió durante toda esta sesión de psql (porque supongo que el rol PUBLIC tiene privilegios de conexión), pero claramente algo cambió: ¿qué es eso?
Pregunta al margen: ¿cómo puedo pedir explícitamente postgres ya sea pública, de hecho, no tiene privilegios de conexión (que pueden haber sido revocado - ver qué puede seleccionar un nuevo usuario desde cualquier mesa? )?