ОС: Ubuntu Xenial 16.04 LTS
Версия PostgreSQL: 9.5.4
Я пытаюсь настроить автоматическое резервное копирование базы данных на своем сервере, и каждый раз, когда я запускаю pg_dump
, это говорит мне, что пароль не был предоставлен. Вот команда, которую я использую для тестирования:
pg_dump --host $DB_HOST --port 5432 --username $DB_USER --no-password --format custom --blobs --verbose --file ~/backups/postgresql/test.backup $DB_NAME
Все переменные моей среды работают нормально. Чтобы предоставить PostgreSQL пароль, я создал .pgpass
файл в ~/.pgpass
. Вот как это выглядит:
# имя хоста: порт: база данных: имя пользователя: пароль $ DB_HOST: 5432: $ DB_NAME: $ DB_USER: $ DB_PASS
В файле есть 0600
разрешения, указанные в руководство. Однако по какой-то причине он не использует пароль всякий раз, когда я запускаю pg_dump
. Я просмотрел другие ответы и несколько руководств в Интернете, но до сих пор не могу понять, в чем проблема.
Любая помощь будет принята с благодарностью.
Вам нужно иметь буквальные значения в ~/.pgpass
, а не переменные оболочки, такие как $DB_HOST
.
Если вам нужны переменные среды, вы можете использовать их, поддерживаемые libpq (клиентская библиотека PostgreSQL), например $PGDATABASE
или $PGPASSWORD
. Есть многие другие. Тебе не понадобится ~/.pgpass
вообще это вы их используете.