\ 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
何故ですか?どの状態が変化しましたか?(私はPUBLICロールが接続権限を持っている推測しているので)私は、接続にmy_readonlyユーザの能力は、この全体のpsqlのセッションを通じて変化しなかったと信じていますが、はっきりと何かが変更されました:そのことは何ですか?
副次的な質問:PUBLICに実際に接続特権があるかどうかをpostgresに明示的に問い合わせるにはどうすればよいですか(それらは取り消されている可能性があります- 新しいユーザーが任意のテーブルから選択できる理由を参照してください)?