pg_configは、拡張機能とクライアントプログラムのコンパイルとPostgreSQLへのリンクを支援するための準拠情報です。マシン上のアクティブなPostgreSQLインスタンスについては何も認識せず、バイナリのみを認識します。
pg_hba.confは、Pgのインストール方法に応じて、他の多くの場所に表示されます。標準の場所は、データベースのdata_directory内のpg_hba.confです(/ home、/ var / lib / pgsql、/ var / lib / postgresql / [version] /、/ opt / postgres /などにあります)。しかし、ユーザーとパッケージャーは好きな場所に置くことができます。残念ながら。
pg_hba.confを見つける唯一の有効な方法は、実行中のPostgreSQLインスタンスにpg_hba.confがどこにあるか、またはsysadminにどこにあるかを尋ねることです。Pgの起動時にinitスクリプトが-c hba_file = / some / other / pathのようなパラメーターを渡す可能性があるため、datadirがどこにあるかを尋ねたり、postgresql.confを解析したりすることさえできません。
あなたがやりたいことはPostgreSQLに尋ねることです:
SHOW hba_file;
このコマンドはスーパーユーザーセッションで実行する必要があるため、シェルスクリプトでは次のように記述します。
psql -t -P format=unaligned -c 'show hba_file';
また、環境変数PGUSER、PGDATABASEなどを設定して、接続が正しいことを確認します。
はい、これは多少問題があります。ユーザーが接続できない場合(たとえば、pg_hba.confの編集を台無しにした後で)、修正するためにpg_hba.confを見つけることができません。
別のオプションは、psコマンドの出力を見て、postmasterデータディレクトリ引数-Dがそこに表示されるかどうかを確認することです。たとえば、
ps aux | grep 'postgres *-D'
pg_hba.confはデータディレクトリ内にあるため(Debian / Ubuntuまたはその派生物を使用していて、それらのパッケージを使用している場合を除きます)。
Debian / UbuntuパッケージからPostgreSQLがインストールされているUbuntuシステムをターゲットにしている場合は、少し簡単になります。誰かがinitdbでホームディレクトリにデータディレクトリを作成した、または/ optにEnterpriseDB Pgをインストールした、手動でコンパイルされたソースからのPgを処理する必要はありません。pg_wrapper、Debian / Ubuntu multiに問い合わせることができます。 -version pgmanager。PostgreSQLはpg_wrapperからpg_lsclustersコマンドを使用します。
接続できない場合(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バージョンに複数のデータディレクトリがある場合は、データベースサイズを確認する必要があります。psから実行中のpostgresのコマンドラインを調べて、データディレクトリ-D引数が編集中の場所と一致するかどうかを確認します。 。
/ubuntu/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711