Wann werden Zugriffsrechte von \ l aufgelistet und wann nicht? Die von \ l aufgelisteten Zugriffsrechte können sich nach einer Erteilung ändern und widerrufen:
$ 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
Warum das? Welcher Zustand hat sich geändert? Ich glaube, die Fähigkeit des my_readonly-Benutzers, eine Verbindung herzustellen, war während dieser gesamten psql-Sitzung unverändert (da ich vermute, dass die PUBLIC-Rolle Verbindungsberechtigungen hat), aber eindeutig hat sich etwas geändert: Was ist das für ein Ding?
Seite Frage: Wie kann ich explizit fragen , ob Postgres PUBLIC in der Tat nicht connect Rechte haben (sie widerrufen haben - siehe Warum ein neuer Benutzer aus einer Tabelle auswählen können? )?