請解釋PostgreSQL中\z
命令的輸出。我瞭解許可,我閱讀了文檔,但不知何故,我錯過了對\z
輸出的解釋。解釋PostgreSQL權限
datastore_default=> \z
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+-----------------+-------+-----------------------------------+--------------------------
public | _table_metadata | view | ckan_default=arwdDxt/ckan_default+|
| | | datastore_default=r/ckan_default +|
| | | readonlyuser=r/ckan_default +|
public | foo | table | ckan_default=arwdDxt/ckan_default+|
| | | datastore_default=r/ckan_default +|
| | | readonlyuser=r/ckan_default +|
不知怎的readonlyuser
似乎能夠讀取表foo
和_foo但在實踐中它不能。這兩個命令都返回一個錯誤:
sudo -u postgres psql -d datastore_default -U readonlyuser -c 'SELECT * FROM foo'
sudo -u postgres psql -d datastore_default -U readonlyuser -c 'SELECT * FROM public.foo'
ERROR: permission denied for schema public
LINE 1: SELECT * FROM public.foo
編輯:顯然,我對數據庫和模式權限的工作方式瞭解甚少。首先只有數據庫管理員(用戶postgres)或數據庫的所有者(在我的情況下用戶ckan_default)可以授予其他用戶在特定數據庫上的權限。該架構僅在數據庫級別,因此可以添加readonlyuser
查看公共架構的權限,無論如何都無法從其他數據庫中進行選擇。
我已經在閱讀ACL時添加了一些細節以供我回答。 – Eelke 2014-09-09 08:49:29