pg_restore игнорирует переменную среды .pgpass и PGPASSWORD

Я хочу импортировать резервную копию с помощью 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

есть идеи?

С уважением


person Herzog    schedule 12.02.2020    source источник


Ответы (1)


Согласно документу, -W запросит пароль. -w не будет

-w
--без пароля

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

-W
--пароль

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

person JGH    schedule 12.02.2020