sha*_*unc 5 postgresql foreign-data postgresql-9.4
我正在尝试创建一个脚本,该脚本在两个 postgres 9.4 数据库之间创建 postgres-fdw 连接。该脚本(在版本控制下签入)一直依靠 pgpass 来做其他事情。我可以使用任何选项来请求在 pgpass 中查找密码吗?...一般来说,关于哪些选项可用的文档在哪里CREATE USER MAPPING
?该参考只是说,选项取决于在服务器上。
小智 7
它可能无法完全回答您的问题,但是:
如果你指定一个用户映射superuser
为postgres_fdw
可以不使用密码进行指定。然后它将依赖于.pgpass
来自服务器的 。
但是,通过对 a 使用映射,superuser
您需要考虑这对您的使用会带来哪些安全问题。
数据源:
自己的数据库:
~/.pgpass
的postgres
OS用户包括: sales.db:*:sales:sales_reader:verysecret
示例会话示出之间的差NOSUPERUSER
和SUPERUSER
:
CREATE SERVER sales FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'sales.db', dbname 'sales');
GRANT USAGE ON FOREIGN SERVER sales TO dwh_writer;
CREATE USER MAPPING FOR dwh_writer SERVER sales OPTIONS (user 'sales_reader');
CREATE USER MAPPING FOR postgres SERVER sales OPTIONS (user 'sales_reader');
CREATE FOREIGN TABLE sales_summary (
item_id text,
amount bigint,
date_sold date
)
SERVER sales
OPTIONS (schema_name 'sales_data', table_name 'sales_summary');
GRANT SELECT ON sales_summary TO dwh_writer;
\c dwh dwh_writer
dwh_writer@dwh=> SELECT count(*) FROM sales_summary;
ERROR: password is required
DETAIL: Non-superusers must provide a password in the user mapping.
\c dwh postgres
postgres@dwh=# SELECT count(*) FROM sales_summary;
count
-------
2
(1 row)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2317 次 |
最近记录: |