Kapan hak akses terdaftar oleh \ l, dan kapan tidak? Hak akses yang terdaftar oleh \ l dapat berubah setelah hibah dan mencabut:
$ 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
Mengapa demikian? Status apa yang berubah? Saya percaya kemampuan pengguna my_readonly untuk terhubung tidak berubah melalui seluruh sesi psql ini (karena saya menduga peran PUBLIC memiliki hak istimewa terhubung), tetapi jelas ada sesuatu yang berubah: benda apa itu?
Side pertanyaan: bagaimana saya bisa secara eksplisit meminta postgres apakah PUBLIC sebenarnya tidak memiliki hak connect (mereka mungkin telah dicabut - lihat Mengapa pengguna baru dapat memilih dari setiap meja? )?