Ответ 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