Postgresql

使用 MD5 加密密碼的 FDW 權限錯誤

  • February 24, 2018

在 Postgres 9.6 中創建外部數據包裝器時,如果我使用以下內容:

CREATE SERVER foreign_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'database', port '5432');

-- permissions
ALTER SERVER foreign_server OWNER TO data_owner;

-- Allow a user to access the foreign server if required
GRANT USAGE ON FOREIGN SERVER foreign_server to data_owner;

-- 4. Create foreign user mapping - using md5 encrypted password 
CREATE USER MAPPING FOR data_owner SERVER foreign_server 
OPTIONS ( USER 'jeff', PASSWORD 'md5de0366066f8d96ac5bb4872b1d77b0cb!');

-- 5. Create foreign table
IMPORT FOREIGN SCHEMA foo EXCEPT
(bar )
FROM SERVER foreign_server INTO foreign_tables_schema;

為什麼我得到一個錯誤,當我將密碼作為純文字時,一切都很好,但是當我使用加密的 md5 密碼時,我無法導入外部表。

有什麼想法嗎?

你能告訴我們你從哪裡得到這應該起作用的想法嗎?

沒有規定將密碼作為 md5 雜湊值提供給postgres_fdw. 也許應該有,但必須有人實施它才能存在。

!您的 md5 密碼末尾似乎有一個額外的內容。您應該刪除它,因為它不能成為密碼的一部分。你是如何計算密碼的?您是否記得在應用 MD5 散列算法之前連接使用者名和密碼?

整個密碼字元串應該是 ‘md5’ + 32 個十六進製字元。

更新

我認為@jjanes 更正確:因為伺服器需要密碼才能連接到遠端實例,所以它必須清楚(可以在可逆加密方案中工作,但肯定不是 MD5)才能使用它並呈現它到遠端數據庫。所以那裡沒有 MD5 散列密碼。我發現唯一相關的是:http ://www.postgresql-archive.org/BUG-8291-postgres-fdw-does-not-re-read-USER-MAPING-after-change-td5763260.html

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