Nun denn, db_link()
wird auf dem Backend-Serverprozess als Benutzer postgres ausgeführt.
Ist Ihr .pgpass
Datei an der richtigen Stelle für Postgres des Benutzers auf der Datenbankmaschine?
Wenn nicht, wie erwarten Sie, dass es gelesen wird?
Ich glaube, Sie müssen etwas übersehen haben:
# 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)