Я работаю на удаленной машине Unix, где я подключаюсь через SSH с моей локальной машины. На другом хосте есть база данных Postgres, которую мне нужно подключить с моей удаленной машины, используя psql.Подключитесь с psql от удаленной машины к удаленной базе данных postgres с сохраненным паролем
Я хотел бы иметь возможность запускать запросы из входного файла и сохранять результаты в выходной файл, однако мне не удалось автоматически установить пароль, превысив необходимость делать это каждый раз, когда я запускаю запрос.
Я попытался следующие:
Run
psql "user=username password=password host=hostname port=port dbname=database"`
с моим
username
,password
,hostname
,port
иdatabase
значений. Это работало нормально, но я не нашел способ добавить аргументы для файлов ввода/вывода (не нужно проходить через интерактивную среду Postgres).Согласно 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
. Есть ли другой способ сделать это?
Любые идеи?
Какое имя вашего удаленного компьютера связано с вашим именем пользователя? Кстати, вы не указали порт во втором вызове 'psql', но я сомневаюсь, что это имеет значение в этом контексте. – zb226
Ну, в соответствии с этим [http://serverfault.com/questions/526170/psql-fe-sendauth-no-password-supplied] это может иметь значение. Я также попытался указать порт, но, как вы сказали, это не проблема. – user90772
Этот вопрос касается использования 'sudo' для вызова' psql'. Вы используете 'sudo' для вызова' psql'? – zb226