Проблема запуска cron с повременным бекапированием PostgreSQL от пользователя postgres без ввода пароля. Ведь именно postgres может запустить нужный нам pg_dump и выполнить его.
Решение найдено следующее:
1) создаем скрипт бекапа базы данных и с правами обычного юзера (примеры скриптов есть в интернете, а можно самим написать);
При написании скрипта в команде pg_dump указывать от какого пользователя запускать, например pg_dump -U postgres, а то .pgpass все равно будет проигнорен.
2) создаем в папке ~/ файлик .pgpass
.pgpass хранит пароль postgres, и при обращении к базе либо ищется пользователь и пароль в данном файле либо в системных переменных типа PG_USER, PG_PASSWORD. Если есть установленные системные переменные, файл .pgpass игнорируется.
Формат файла: hostname:port:database:username:password
3) chmod 0600 ~/.pgpass - именно такие права должны быть у этого файла.
Теперь скрипт должен работать как надо.
Источники: документация к PostgreSQL.
Комментариев нет:
Отправить комментарий