それでは、db_link()
ユーザーpostgresとしてバックエンドサーバープロセスで実行されます。
あなたの.pgpass
ですか データベースマシン上のユーザーpostgresの正しい場所にファイルしますか?
そうでない場合、どのように読まれると思いますか?
私はあなたが何かを逃したに違いないと思います:
# ls -l /var/lib/postgresql/.pgpass
-rw------- 1 root root 79 Jun 24 08:10 /var/lib/postgresql/.pgpass
(meanwhile, in psql...)
dblinklocal=# SELECT dblink_connect('conn1', 'hostaddr=127.0.0.1 port=5432 dbname=dblinkremote user=testuser');
ERROR: could not establish connection
DETAIL: fe_sendauth: no password supplied
# chown postgres:postgres .pgpass
dblinklocal=# SELECT dblink_connect('conn1', 'hostaddr=127.0.0.1 port=5432 dbname=dblinkremote user=testuser');
dblink_connect
----------------
OK
(1 row)