2015-10-28 3 views
1

Я работаю на удаленной машине Unix, где я подключаюсь через SSH с моей локальной машины. На другом хосте есть база данных Postgres, которую мне нужно подключить с моей удаленной машины, используя psql.Подключитесь с psql от удаленной машины к удаленной базе данных postgres с сохраненным паролем

Я хотел бы иметь возможность запускать запросы из входного файла и сохранять результаты в выходной файл, однако мне не удалось автоматически установить пароль, превысив необходимость делать это каждый раз, когда я запускаю запрос.

Я попытался следующие:

  1. Run

    psql "user=username password=password host=hostname port=port dbname=database"` 
    

    с моим username, password, hostname, port и database значений. Это работало нормально, но я не нашел способ добавить аргументы для файлов ввода/вывода (не нужно проходить через интерактивную среду Postgres).

  2. Согласно another SO question, я создал файл ~/.pgpass в следующем формате: hostname:port:database:username:password

    , а затем chmod 0600 ~/.pgpass, но при подключении как: psql -h hostname -U username -d database -w PSQL проигнорировала (. Я получил следующее недоставленное сообщение аутентификации)

    psql: fe_sendauth: пароль не указан.

    Обратите внимание: мое имя удаленной машины отличается от моего имени пользователя, так что это может также создать проблему при создании файла .pgpass. Есть ли другой способ сделать это?

Любые идеи?

+0

Какое имя вашего удаленного компьютера связано с вашим именем пользователя? Кстати, вы не указали порт во втором вызове 'psql', но я сомневаюсь, что это имеет значение в этом контексте. – zb226

+0

Ну, в соответствии с этим [http://serverfault.com/questions/526170/psql-fe-sendauth-no-password-supplied] это может иметь значение. Я также попытался указать порт, но, как вы сказали, это не проблема. – user90772

+0

Этот вопрос касается использования 'sudo' для вызова' psql'. Вы используете 'sudo' для вызова' psql'? – zb226

ответ

0

Это работало нормально, но я не нашел способ добавить аргументы для ввода-вывода файлов/

Вы можете либо перенаправляют входной файл для Psql, или указать его в -f опции:

psql < input.sql 
psql -f input.sql 

Что касается выходного файла, просто перенаправить вывод Psql к нему:

psql -f input.sql > output.txt 
+0

Спасибо. Это не работает с использованием режима строки psql. Решение заключалось в том, чтобы добавить PGPASSWORD = пароль перед psql, а затем делать, когда вы пишете. – user90772

+0

Почему бы и нет? 'psql" host = ... dbname = ... user = ... port = ... password = ... "< input.sql > output.sql' отлично работает. –

+0

Я не пробовал это, я пытался использовать -f -o аргументы, и это не помогло, спасибо – user90772

Смежные вопросы