Як я можу отримати pg_dump для належної автентифікації


98

Я спробував з допомогою змінного хоста PGPASSWORDі .pgpassі ні один з цих двох не дозволить мені аутентифікації в базу даних. У мене є chmod«д .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 authentication ..." частина повідомлення про помилку означає, що він взагалі не використовує автентифікацію пароля .
Мілен А. Радев

Відповіді:


196

Швидке рішення

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

6
Для тих, хто не знає, де знаходиться ваш конф-файл: use sudo locate pg_hba.conf- це має бути sudo, оскільки користувач postgres буде єдиним, хто має доступ до каталогу (я думаю).
jcollum

ваша команда працювала для мене, але я не можу дізнатися, де це, або як називається файл, як я можу знайти цей файл?
Собхан

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.