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

问题描述 投票:0回答:3

我的想法是,我有一个名为

northwind
的本地数据库,并且通过
postgres_fdw
我想连接本地主机上另一个名为
test
的数据库(远程连接模拟,对于诸如更新数据库中的表之类的情况,执行某些操作在其他数据库中,例如保存到历史记录等..)。所以我打开 psql 控制台并输入:

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

正如我在“查看外国数据包装器”链接中找到的那样。接下来我也跟着教程: CREATE USER MAPPING for postgres SERVER app_db OPTIONS (user 'postgres', password 'postgres');

(我假设用户和密码应该与我在 Hibernate 中访问数据库时使用的相同,并且教程中的 
current_user

在我的例子中是

postgres
,因为这是我的 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..

时我不使用本地主机服务器名称?我不能,因为它的名称带有空格(PostgreSQL 9.3),并且在创建时会导致一些奇怪的问题。先感谢您。

更新
:即使我在本地主机上创建另一个名为“app_db”的服务器,它也不起作用。

database postgresql postgresql-9.3 pgadmin foreign-data-wrapper
3个回答
13
投票

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 仅允许具有

peer

权限的客户端进行

SUPERUSER
身份验证。要允许受限用户使用 FDW,您必须使用
password
身份验证,如
此答案
中所述


9
投票

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

然后:

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

然后:

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

但是有没有办法检查它是否真的是“远程”连接?因为服务器位于同一个本地主机上,我不知道是否可以确定。


0
投票

我的案例是在 Windows 计算机上使用 Docker for Desktop,但容器运行 Linux 内核。

https://stackoverflow.com/a/39259965/1346844

很有魅力:)非常感谢

© www.soinside.com 2019 - 2024. All rights reserved.