2017-05-05 11 views
0

Ich habe einen Ubuntu-Server, der Dokumente verarbeitet und einen anderen, der die Datenbank (postgresql 9.3) haben.Führen Sie Postgres Abfrage von einem anderen Server, in Bash

lief ich psql -? zu verstehen, wie zu einem anderen DB und der letzte Befehl wäre zu verbinden:

psql -U postgres -W -h 1.2.3.4 -d testdb -p 5432 

Es funktioniert, aber ich muss das Kennwort eingeben, nachdem der Befehl ausgegeben wird.

Ich habe versucht, diesen Befehl in einem Bash-Skript anpassen:

#!/bin/bash 
psql -U postgres -W mypassword -h 1.2.3.4 -d testdb -p 5432 << EOF 
select * from mytable; 
\q 
EOF 

Unnötig zu sagen, dass dies nicht der richtige Befehl ist. Auch dann, wenn das Passwort nicht als Passwort anerkannt bekommen, die den Fehler meldet:

psql: warning: extra command-line argument "mypassword" ignored 
Password for user postgres: 
psql: FATAL: password authentication failed for user "postgres" 
FATAL: password authentication failed for user "postgres" 

In einem anderen Server, in dem das Skript auf dem lokalen DB läuft, mein Arbeits Skript ist:

su - postgres -c "psql myDatabase" << EOF 
select * from "myOtherTable"; 
\q 
EOF 

Die Frage ist einfach, wie kann ich den richtigen Befehl für bash schreiben, um eine Verbindung zu einer anderen Datenbank mit Benutzer/Passwort herzustellen und Befehle zu erteilen?

Ein Link Ich habe versucht, aber Passwort scheint nicht eingestellt werden: run psql query in bash

Dank!

Antwort

1

Versuchen

PGPASSWORD=yourpass psql -U postgres -W -h 1.2.3.4 -d testdb -p 5432 

See: https://www.postgresql.org/docs/9.3/static/libpq-envars.html

oder ~/.pgpass Datei https://www.postgresql.org/docs/9.3/static/libpq-pgpass.html

+0

gute Verbindungen! Danke, dass ich sie auschecke und wenn Sie arbeiten wird Ihre Antwort markieren (: – Nihvel

+0

Zuerst fragte es nach dem Passwort, dann hörte es einfach auf. Test Server neu gestartet, Skript lief und arbeitete! Ich versuchte die .pgpass Lösung. Erstellen dieser Datei Im Stammordner sind die Berechtigungen für 0600 und der Befehl im Skript "psql -U postgres -h 1.2.3.4 -d Datenbankname << eof [...] \ q eof" – Nihvel

Verwandte Themen