Как передать пароль в pg_dump? - PullRequest
234 голосов
/ 24 мая 2010

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

0 3 * * * pg_dump dbname | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz

За исключением того, что после запуска, он ожидает, что я наберу пароль. Я не могу этого сделать, если я запускаю его из cron. Как я могу передать один автоматически?

Ответы [ 13 ]

0 голосов
/ 26 марта 2019

Обратите внимание, что в Windows файл pgpass.conf должен находиться в следующей папке:

%APPDATA%\postgresql\pgpass.conf

если в папке %APPDATA% нет папки postgresql, создайте ее.

содержимое файла pgpass.conf выглядит примерно так:

localhost:5432:dbname:dbusername:dbpassword

ура

0 голосов
/ 31 июля 2017

самый простой способ, на мой взгляд, такой: Вы редактируете свой основной файл конфигурации postgres: pg_hba.conf там нужно добавить следующую строку:

host <you_db_name> <you_db_owner> 127.0.0.1/32 trust

и после этого вам нужно запустить cron так:

pg_dump -h 127.0.0.1 -U <you_db_user> <you_db_name> | gzip > /backup/db/$(date +%Y-%m-%d).psql.gz

и все работало без пароля

0 голосов
/ 14 мая 2013

Другой (возможно, небезопасный) способ передачи пароля - использование перенаправления ввода, т. Е. Вызов

pg_dump [params] < [path to file containing password]

...