Я запускаю задание cron, которое создает дамп базы данных с помощью команды pg_dump
, например:
export PGPASSWORD="XXXXXXXX"; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Но когда я запускаю эту команду, я получаю ошибку аутентификации пароля:
pg_dump: [archiver (db)] connection to database "my_db" failed: FATAL: password authentication failed for user "my_user"
FATAL: password authentication failed for user "my_user"
Я не могу поместить файл .pgpass
под пользователем, который запускает cron, но я мог бы разместить его в другом месте и указать PGPASSFILE
примерно так:
export PGPASSFILE=/path/to/.pgpass; pg_dump -h localhost -U my_user my_db > /tmp/db_dump.sql
Ноопять это возвращает ту же ошибку аутентификации.Я подтвердил, что это не проблема с неправильным паролем, потому что он работает, когда я использую интерактивное приглашение:
pg_dump --password -h localhost -U my_user my_db > /tmp/db_dump.sql
Password: XXXXXXXX
Когда я смотрю на документацию, это выглядит как PGPASSWORD
и PGPASSFILE
отсутствуют в переменных среды (возможно, они были удалены?) https://www.postgresql.org/docs/10/app-pgdump.html
Если я не могу создать файл .pgpass
, расположенный в домашнем каталоге пользователя, выполняющего скрипт, какеще я могу запустить команду pg_dump
?
Для контекста я запускаю pg_dump
версия 10.6:
pg_dump --version
pg_dump (PostgreSQL) 10.6 (Ubuntu 10.6-0ubuntu0.18.04.1)