pg_config
призначений для інформації про компліментацію, щоб допомогти розширенням та клієнтським програмам збирати та посилатися на PostgreSQL. Він нічого не знає про активні екземпляри PostgreSQL на машині, лише двійкові файли.
pg_hba.conf
може з’являтися в багатьох інших місцях залежно від того, як встановлено Pg. Стандартне розташування в pg_hba.conf
межах data_directory
бази даних (який може бути в /home
, /var/lib/pgsql
, /var/lib/postgresql/[version]/
, /opt/postgres/
і т.д. і т.д. і т.д.) , але користувачі і пакувальників може поставити його там , де їм подобається. На жаль,
Єдиний вірний спосіб знайти pg_hba.conf
- запитати запущений екземпляр PostgreSQL, де він pg_hba.conf
знаходиться, або запитати sysadmin, де він знаходиться. Ви навіть не можете розраховувати на запитання, де знаходиться datadir, і аналіз, postgresql.conf
оскільки сценарій init може передавати параметр, як -c hba_file=/some/other/path
при запуску Pg.
Що ви хочете зробити, це запитати PostgreSQL:
SHOW hba_file;
Ця команда повинна бути запущена на суперсесійному сеансі, тому для сценаріїв оболонок ви можете написати щось на зразок:
psql -t -P format=unaligned -c 'show hba_file';
і встановити змінні оточення PGUSER
, PGDATABASE
і т.д. , щоб переконатися , що з'єднання є правильним.
Так, це дещо проблема курки-яєць, оскільки, якщо користувач не може підключитися (скажімо, після викручування редагування pg_hba.conf
), ви не можете його знайти pg_hba.conf
, щоб виправити це.
Інший варіант полягає в тому, щоб подивитися на ps
вихід команди і побачити, чи -D
є там видно аргумент каталогу даних postmaster , наприклад
ps aux | grep 'postgres *-D'
оскільки вони pg_hba.conf
будуть знаходитися всередині каталогу даних (якщо ви не перебуваєте на Debian / Ubuntu чи якійсь похідній і використовуєте їх пакети).
Якщо ви орієнтовані саме на системи Ubuntu з встановленим PostgreSQL з пакетів Debian / Ubuntu, це стає трохи простіше. Вам не доведеться мати справу з ручним скомпільований з-джерела Pg , що у кого - то initdb
«так каталогу_данние для їх домашньої директорії, або EnterpriseDB Pg встановити в / OPT, і т.д. Ви можете запитати pg_wrapper
, в Debian / Ubuntu багатоверсійності Pg менеджер, де PostgreSQL використовує в pg_lsclusters
команду з pg_wrapper
.
Якщо ви не можете підключитися (Pg не працює, або вам потрібно змінити його pg_hba.conf
для редагування ), вам доведеться шукати pg_hba.conf
файли в системі . На Mac і Linux щось подібне sudo find / -type f -name pg_hba.conf
буде робити. Потім перевірте PG_VERSION
файл у тому самому каталозі, щоб переконатися, що це правильна версія PostgreSQL, якщо у вас є декілька. (Якщо pg_hba.conf
це в /etc
/, ігноруйте це, натомість це ім'я батьківського каталогу). Якщо у вас є декілька каталогів даних для тієї ж версії PostgreSQL, вам доведеться переглянути розмір бази даних, перевірте командний рядок запущених postgres, ps
щоб побачити, чи -D
відповідає аргумент каталогу даних, де ви редагуєте тощо