1

У меня есть команда pg_dump в cron, которая обращается к PostgreSQL под пользователем postgres и не предоставляет пароль.

pg_dump --username=postgres ...

Я установил в pg_hba.conf, что пользователю postgres следует доверять для всех баз данных с локального хоста.

local all postgres trust

Когда я запускаю команду под обычным пользователем, она работает.
Когда я запускаю его с правами суперпользователя (sudo -i), он требует пароль, и, следовательно, задача crontab не проходит аутентификацию.

Может ли кто-нибудь объяснить мне, что здесь происходит?

Отказ от ответственности: я Linux n00b.

1 ответ1

3

Этот парень мой герой: http://archives.postgresql.org/pgsql-admin/2011-03/msg00228.php

Опция --host = localhost говорит о том, что вы используете соединение TCP/IP (то есть "строки хоста" в pg_hba.conf), поэтому запрашивает аутентификацию md5. Отсюда и пароль.

Если у одного пользователя не запрашивается пароль, возможно, у этого пользователя есть файл .pgpass, сообщающий pg_dump, какой пароль использовать.

Другими словами, ключ --host (о котором я не упомянул) был причиной того, что мои «локальные» строки в pg_hba.conf не имели отношения к этой команде.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .