Postgres:使用dblink进行远程连接

时间:2016-02-17 06:17:43

标签: postgresql dblink

我们从承包商处获得了Postgres数据库凭证(启用了SSL),这允许我们使用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能够使用凭据连接到远程数据库,我该怎么做才能使dblink工作?

谢谢!

1 个答案:

答案 0 :(得分: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;

用于您的数据库或架构。