簡體   English   中英

使用 postgres 超級用戶創建 Postgres FDW,但對遠程模式具有只讀訪問權限

[英]Create Postgres FDW using the postgres super user yet have read only access to the remote schema

我正在嘗試使用postgres超級用戶憑據通過以下步驟創建 FDW -

  1. 我的超級用戶是postgres
  2. CREATE SERVER testfdw FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '10.10.10.171', dbname 'testdb', port '5432', fetch_size '50000');
  3. 我在testdb上創建了一個名為testdb_read_only_user的只讀遠程用戶,並授予其中所有表、序列和函數的只讀權限
  4. 我現在為我的本地數據庫超級用戶postgres創建一個用戶映射
  5. postgres服務器testfdw選項創建用戶映射(用戶“testdb_read_only_user”,密碼“testpasswrd”)
  6. 然后我運行 IMPORT FOREIGN SCHEMA public FROM SERVER testfdw INTO test_local_schema
  7. 現在,當我嘗試使用postrges超級用戶在test_local_schema中創建一個新的外部表時,我仍然可以創建一個,但我期望的實際行為是權限被拒絕錯誤,並且我的用戶映射基於我創建的只讀用戶在遠程數據庫上

我在這里錯過了什么嗎? 請指導。

外部模式 test_local_schema 歸 postgres(超級用戶)所有,PostgreSQL 將其視為本地模式(在目標上)為您提供創建新表的選項,現在當您在 test_local_schema 中創建新的外部表時,postgres 將檢查以下約束

  1. 外部表的名稱必須與同一架構中的任何其他外部表、表、序列、索引、視圖或實體化視圖的名稱不同。
  2. 要創建外部表,您必須在外部服務器上具有 USAGE(read) 權限,以及在表中使用的所有列類型的 USAGE 權限
  3. 目標架構上的 CREATE 特權。

由於您的用戶映射在源數據庫中具有只讀用戶,您應該能夠獲取數據以便在目標數據庫中創建外部表,但是每當您更新和插入新數據時,它都會給您錯誤,因為 testdb_read_only_user 沒有任何更新/插入權限。

https://www.postgresql.org/docs/9.5/sql-createforeigntable.html https://www.postgresql.org/docs/9.5/sql-importforeignschema.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM