我们从承包商处获得了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工作?
谢谢!
答案 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;
用于您的数据库或架构。