Permissions
Postgres 使用者無法讀取表格的明顯原因?
情況:作為角色/組成員的 PG 使用者(非超級使用者,繼承自父角色)無法從特定表中讀取,即使已指定以下對象權限:
- DBName - 連接
- 選擇 - 真
- 插入 - 真
- 刪除 - 真
- 更新 - 真
我無法弄清楚該
tablename_tablename_id_seq
對象的作用——我的所有數據庫表和序列之間存在 1:1 的關係,但不確定這會如何影響權限。我嘗試為“使用”點擊複選框為True(在 Navicat 中),但使用者仍然無法從指定的表中讀取。
我試圖在 PG Admin 3&4、Navicat 和 Postico 中編輯這些權限……知道我卡在哪裡了嗎?
- 通過以下方式連接到相應的數據庫
\c DATABASE_NAME
- 它應該具有連接權限:
GRANT CONNECT ON DATABASE DATABASE_NAME TO USER_NAME;
- 授予使用架構的權限
GRANT USAGE ON SCHEMA public TO USER_NAME;
- 授予對所有表的選擇權限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO USER_NAME;
我會嘗試以下步驟:
- 他們可以連接到數據庫嗎?
- 他們
usage
對架構有權限嗎?- 他們對桌子有選擇權限嗎?
- 您是否使用行安全性?
- 您是否使用列安全性?如果他們只有對列的選擇權限
foo
並且您嘗試select *
這是一個錯誤- 他們是什麼
search_path
?如果是foo,public
並且他們可以訪問public.mytable
但不是foo.mytable
那是一個錯誤。嘗試表的完全限定名稱 ($schemaName.tableName
)