Quand les privilèges d'accès sont-ils répertoriés par \ l et quand ne le sont-ils pas? Les privilèges d'accès répertoriés par \ l peuvent changer après une autorisation et une révocation:
$ 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
Pourquoi donc? Quel état a changé? Je crois que la capacité de l'utilisateur my_readonly à se connecter est restée inchangée pendant toute cette session psql (car je suppose que le rôle PUBLIC a des privilèges de connexion), mais clairement quelque chose a changé: quelle est cette chose?
Question Côté: comment puis - je demander explicitement postgres si PUBLIC en fait n'ont des privilèges de connexion (ils ont été révoqués - voir pourquoi un nouvel utilisateur peut choisir parmi une table? )?
la source