Postgres:使用dblink进行远程连接

3
我们从承包商那里得到了一个带有SSL的Postgres数据库凭证,可以使用pdAdmin 3连接到数据库。但是,我们只有只读权限(无法进行pg_dump),承包商不会授予更多权限。
我们需要从远程数据库中获取一些数据到本地数据库。因此,我想使用dblink来执行此任务。
我在psql上运行以下命令:
insert into shifts select * from dblink('hostaddr=remote_addr port=9000 dbname=production user=user password=passwd', 'select user_id, location_id from shifts') as t1(user_id integer, location_id integer);

然后我得到了以下信息:
错误:需要密码 详细信息:如果服务器没有请求密码,则非超级用户无法连接。提示:必须更改目标服务器的身份验证方法。
由于我对Postgres和dblink很陌生,不知道为什么会抱怨没有密码。我想知道,要进行dblink连接,远程数据库是否需要授予任何更多的特权?
如果pdAdmin 3可以使用凭据连接到远程DB,那么我应该怎么做才能使dblink起作用呢?
谢谢!
1个回答

0

只有超级用户才能为您提供通过DBLINK连接的功能

只需运行下面的命令,无论您是否能够连接到数据库

SELECT dblink_connect('myconn', 'dbname=postgres');
SELECT dblink_connect('myconn', 'hostaddr=remote_addr port=9000 dbname=production user=user password=passwd');

只需在 dbname 后面提供要连接的数据库名称。

您可以进行连接

dblink_connect_u

dblink_connect_u()与dblink_connect()相同,唯一的区别在于它允许非超级用户使用任何身份验证方法进行连接。

Postgres网站上的链接为dblink

对于超级用户,请要求他们创建扩展。

CREATE EXTENSION dblink;

针对您的数据库或模式。


你能否详细说明远程超级用户需要做什么才能允许我们使用dblink?谢谢! - nigong
@nigong,关于这个问题的答案,请创建dblink扩展。 - SarthAk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接