gpt4 book ai didi

database - 如何使用 postgres_fdw 连接到本地主机?

转载 作者:太空狗 更新时间:2023-10-30 01:48:21 25 4
gpt4 key购买 nike

我的想法是我有一个名为 northwind 的本地数据库,并且使用 postgres_fdw 我想连接本地主机上另一个名为 test 的数据库(远程连接模拟,比如当我的数据库中的表被更新时,在其他数据库中做一些事情,比如保存到历史等等。)。所以我打开 psql 控制台并输入:

CREATE SERVER app_db 
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test', host 'localhost:5432');

正如我在 A Look at Foreign Data Wrappers 中发现的那样关联。接下来我也跟着教程:

CREATE USER MAPPING for postgres
SERVER app_db
OPTIONS (user 'postgres', password 'postgres');

(我假设用户和密码应该与我使用的相同,例如在 Hibernate 中访问数据库,并且在我的例子中,教程中的 current_userpostgres 因为这是我的 PgAdmin III 中唯一存在的角色)。然后我创建了外表:

CREATE FOREIGN TABLE groups
(
id serial NOT NULL,
name character varying(255) NOT NULL,
version integer DEFAULT 0
)
SERVER app_db OPTIONS (table_name 'groups')

没关系,我可以在 PgAdmin III 的 schema/foreign tables 中找到它。但是当我尝试 SELECT * FROM groups 时,我得到了:

********** ERROR**********

ERROR: could not connect to server "app_db"
SQL State: 08001

这可能是因为当我 CREATE SERVER app_db.. 时我没有使用 localhost 服务器名称吗?我不能,因为它的名称带有空格(PostgreSQL 9.3)并且在创建时会导致一些奇怪的问题。先感谢您。更新:即使我在本地主机上创建另一个名为`app_db 的服务器,它也不起作用。

最佳答案

您可以使用 Unix Domain Socket 而不是 TCP 连接来连接以获得更简单的配置和更好的性能(仅限 Linux/Unix,Windows 不支持)。

CREATE SERVER app_db
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname 'test');

此外,如果启用了peer 身份验证(默认),您可以省略密码。

CREATE USER MAPPING for postgres
SERVER app_db
OPTIONS (user 'postgres');

注意:peer 身份验证只能用于 postgres 用户,因为 FDW 连接是由作为系统用户 postgres 运行的服务器后端创建的。

此外,出于安全原因,postgresq_fdw 只允许对具有 SUPERUSER 权限的客户端进行 peer 身份验证。要允许受限用户使用 FDW,您必须使用 password 身份验证,如 this answer 中所述。

关于database - 如何使用 postgres_fdw 连接到本地主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29900748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com