pg_restore игнорирует .pgpass и переменную окружения PGPASSWORD - PullRequest
0 голосов
/ 12 февраля 2020

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

Что работает для меня :

 PGPASSWORD=xyz pg_dump -h localhost -U user -Fc database > ~/dump_prod.pgsql

Что НЕ работает

1.)

PGPASSWORD=xyz pg_restore -h localhost -d database -U user -W --clean --no-owner ~/dump_prod.pgsql

2.)

pg_restore --dbname=postgresql://user:pass@localhost:5432/db -W --clean --no-owner ~/dump_prod.pgsql

3.)

touch ~/.pgpass
echo "*:*:*:*:password > ~/.pgpass
chmod 0600 ~/.pgpass
pg_restore -h localhost -d db -U user -W --clean --no-owner ~/dump_prod.pgsql

есть идеи?

С уважением

1 Ответ

2 голосов
/ 12 февраля 2020

В соответствии с do c, -W запрашивает пароль. -w не будет

-w
--no-password

Никогда не выдавать запрос пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими способами, такими как файл .pgpass, попытка подключения завершится неудачно. Эта опция может быть полезна в пакетных заданиях и сценариях, где нет ни одного пользователя для ввода пароля.

-W
--password

Принудительно pg_restore запрашивает пароль перед подключением к базе данных.

...