pg_config призначений для отримання інформації про компліментацію, щоб допомогти розширенням та клієнтським програмам збирати та посилатися на PostgreSQL. Він нічого не знає про активні екземпляри PostgreSQL на машині, лише двійкові файли.
pg_hba.conf може відображатися в багатьох інших місцях залежно від того, як встановлено Pg. Стандартне розташування - pg_hba.conf в каталозі даних_даного бази даних (який може бути в / home, / var / lib / pgsql, / var / lib / postgresql / [версія] /, / 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-майстра -D, наприклад,
ps aux | grep 'postgres *-D'
оскільки pg_hba.conf буде знаходитися всередині каталогу даних (якщо ви не перебуваєте на Debian / Ubuntu чи якійсь похідній і використовуєте їх пакети).
Якщо ви орієнтовані саме на системи Ubuntu з встановленим PostgreSQL з пакунків Debian / Ubuntu, це стає трохи простіше. Вам не доведеться мати справу зі складеним вручну Pg-джерелом, для якого хтось initdb'd даними даних у своєму домашньому режимі, або EnterpriseDB Pg встановлюється в / opt тощо. Ви можете запитати pg_wrapper, Debian / Ubuntu multi -версія Pg manager, де 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, де ви редагуєте тощо. .
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711