Швидке рішення
Проблема полягає в тому, що він намагається виконати локальну 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