Как я могу получить дамп pg для правильной аутентификации
Я пробовал использовать переменную хоста PGPASSWORD
и .pgpass
и ни один из этих двух не позволит мне аутентифицироваться в базе данных. У меня есть chmod
' d .pgpass
для соответствующих разрешений, а также попытался:
export PGPASSWORD=mypass and PGPASSWORD=mypass
пароль содержит однако я заключил его в одинарные кавычки
PGPASS='mypass'
и все равно не пройти.
Я:
pg_dump dbname -U username -Fc
а я все равно получаю
pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"
1 ответ:
Быстрое Решение
проблема в том, что он пытается проанализировать местные
peer
аутентификация на основе вашего текущего имени пользователя. Если вы хотите использовать пароль, вы должны указать имя хоста с-h
.pg_dump dbname -U username -h localhost -F c
объяснение
это связано со следующим в вашем
pg_hba.conf
local all all peer host all all 127.0.0.1/32 md5
это говорит Postgres использовать
peer
проверка подлинности Локальные пользователи, которые требуют, чтобы имя пользователя postgres соответствовало вашему текущему системному имени пользователя. Вторая строка относится к соединениям с использованием имени хоста и позволит вам аутентифицироваться с помощью пароля черезmd5
метод.Моя Предпочтительная Конфигурация Разработки
Примечание: это должно использоваться только на однопользовательских рабочих станциях. Это может привести к серьезной уязвимости безопасности в производственной или многопользовательской среде машина.
при разработке против локального экземпляра postgres мне нравится менять свой локальный метод аутентификации на
trust
. Это позволит подключаться к postgres через локальный сокет unix как любой пользователь без пароля. Это можно сделать, просто изменивpeer
вышеtrust
и перезагрузка postgres.# Don't require a password for local connections local all all trust