สิทธิในการเข้าถึงถูกระบุโดย \ l เมื่อใดและจะไม่ใช้ สิทธิ์การเข้าถึงที่ระบุโดย \ l สามารถเปลี่ยนแปลงได้หลังจากการให้สิทธิ์และการเพิกถอน:
$ 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
ทำไมถึงเป็นอย่างนั้น? สถานะอะไรเปลี่ยนแปลง ฉันเชื่อว่าความสามารถของผู้ใช้ my_readonly ในการเชื่อมต่อไม่เปลี่ยนแปลงตลอดทั้งเซสชัน psql นี้ (เพราะฉันเดาว่าบทบาท Public มีสิทธิ์เชื่อมต่อ) แต่มีอะไรเปลี่ยนแปลงไปบ้าง: สิ่งนั้นคืออะไร
คำถามด้านข้าง: ฉันจะถามอย่างชัดเจนไม่ว่าจะเป็น postgres มหาชนในความเป็นจริงไม่ได้มีสิทธิพิเศษในการเชื่อมต่อ (พวกเขาอาจจะถูกเพิกถอน - ดูทำไมผู้ใช้ใหม่สามารถเลือกจากตารางใด ๆ ? )?