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відповідає аргумент каталогу даних, де ви редагуєте тощо