Permissions

Postgres 使用者無法讀取表格的明顯原因?

  • May 2, 2019

情況:作為角色/組成員的 PG 使用者(非超級使用者,繼承自父角色)無法從特定表中讀取,即使已指定以下對象權限:

  • DBName - 連接
  • 選擇 - 真
  • 插入 - 真
  • 刪除 - 真
  • 更新 - 真

我無法弄清楚該tablename_tablename_id_seq對象的作用——我的所有數據庫表和序列之間存在 1:1 的關係,但不確定這會如何影響權限。

我嘗試為“使用”點擊複選框為True(在 Navicat 中),但使用者仍然無法從指定的表中讀取。

我試圖在 PG Admin 3&4、Navicat 和 Postico 中編輯這些權限……知道我卡在哪裡了嗎?

  1. 通過以下方式連接到相應的數據庫\c DATABASE_NAME
  2. 它應該具有連接權限:GRANT CONNECT ON DATABASE DATABASE_NAME TO USER_NAME;
  3. 授予使用架構的權限GRANT USAGE ON SCHEMA public TO USER_NAME;
  4. 授予對所有表的選擇權限GRANT SELECT ON ALL TABLES IN SCHEMA public TO USER_NAME;

我會嘗試以下步驟:

  1. 他們可以連接到數據庫嗎?
  2. 他們usage對架構有權限嗎?
  3. 他們對桌子有選擇權限嗎?
  4. 您是否使用行安全性?
  5. 您是否使用列安全性?如果他們只有對列的選擇權限foo並且您嘗試select *這是一個錯誤
  6. 他們是什麼search_path?如果是foo,public並且他們可以訪問public.mytable但不是foo.mytable那是一個錯誤。嘗試表的完全限定名稱 ( $schemaName.tableName)

引用自:https://dba.stackexchange.com/questions/168150