Bây giờ, db_link()
sẽ chạy trên quy trình máy chủ phụ trợ với tư cách là người dùng postgres.
Là .pgpass
của bạn tập tin vào đúng vị trí cho postgres của người dùng trên máy cơ sở dữ liệu?
Nếu không, bạn mong đợi nó sẽ được đọc như thế nào?
Tôi nghĩ rằng bạn chắc hẳn đã bỏ lỡ điều gì đó:
# 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)