Ich weiß nicht, was mit meinen Einstellungen falsch ist, aber wenn ich versuche, mitdblink verwendet nicht die .pgpass Datei
psql -h {db address} -U {username} -w {db name}
Es funktioniert gut, mit einer Datenbank zu verbinden, so die .pgpass Datei OK. Aber wenn ich an die lokale DB verbinden, und versuchen Sie dies:
select dblink_connect_u('conName', 'hostaddr={address} port={port} dbname={dbName} user={userName} ');
ich den Fehler:
ERROR: could not establish connection
DETAIL: fe_sendauth: no password supplied
Mit Kennwort in der Verbindungszeichenfolge, es funktioniert gut, aber ich möchte nicht, dass die Passwort, um von jedem sichtbar zu sein. Irgendeine Idee, warum macht dies das?
Postgres Version: 9.3
Edit: OS: Postgres auf meinem Computer läuft (win7) und auf dem Remote-Server zu (Ubuntu Server 14.04). In Windows ist die Datei pgpass.conf: Benutzer/Myuser/AppData/Roaming/postgres/pgpass.conf, auf Ubuntu: /var/lib/postgres/.pgpass Aber ich habe mit Ubuntu auf lokalen und Remote-Server versucht Auch mit dem gleichen .pgpass Speicherort, und der Postgres-Prozess wird als Postgres-Benutzer ausgeführt, aber das Ergebnis ist das gleiche.
.pgpass Dateiinhalt:
192.168.1.47:5432:*:remoteusername:remotepassword 192.168.1.46:5432:*:localusername:localpassword
Die beiden Datenbanken sind nicht auf der gleichen Maschine.
aktualisieren
Es scheint eine IP-Adresse auflösen Problem zu sein, denn wenn ich die dblink_conncet_u()
mit 'hostaddr=ip_address_here'
versuchen ist es nicht funktioniert. Aber wenn ich den Hostnamen in die Datei anstelle der IP-Adresse und in der Verbindungszeichenfolge verwende ich 'host=hostname_here'
es funktioniert gut.
Sie sind nicht der wesentlichen Einzelheiten zu nennen. Postgres-Version, OS, der Inhalt Ihrer .pgpass-Datei. Verbinden Sie sich mit demselben Db-Cluster auf demselben Port auf derselben Maschine? Usw. –
@ErwinBrandstetter Sie haben Recht. Beitrag wurde aktualisiert. – notARealMVP
Wo befindet sich der '.pgpass'? Auf dem Client-Computer (auf dem Sie SQL ausführen) oder auf dem Server (auf dem Postgres ausgeführt wird)? –