Швидке рішення
Проблема полягає в тому, що він намагається виконати локальну 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методу.
Моя бажана конфігурація розробки
ПРИМІТКА . Це слід використовувати лише на однокористувацьких робочих станціях. Це може призвести до значної вразливості безпеки на виробництві чи на багато користувачів.
Розробляючи місцевий екземпляр постгресу, я хотів би змінити свій метод локальної аутентифікації на trust. Це дозволить підключитися до postgres через локальний unix-сокет, як будь-який користувач без пароля. Це можна зробити, просто перемінившись peerвище trustта перезавантаживши поштові записи.
# Don't require a password for local connections
local all all trust