pg_config拡張機能とクライアントプログラムをコンパイルしてPostgreSQLにリンクするのを支援する、コンパイル情報用です。マシン上のアクティブなPostgreSQLインスタンスについては何も知りません。バイナリのみです。
pg_hba.confPgのインストール方法に応じて、他の多くの場所に表示されます。標準の場所はあるpg_hba.conf範囲内data_directory(内なる可能性があるデータベースの/home、/var/lib/pgsql、/var/lib/postgresql/[version]/、/opt/postgres/、などなどなど)しかし、彼らは好きな場所ユーザーやパッケージャはそれを置くことができます。残念ながら。
有効な唯一の検索方法pg_hba.confは、実行中のPostgreSQLインスタンスに現在の場所を確認するpg_hba.confか、sysadminに現在の場所を確認することです。postgresql.confinitスクリプトが-c hba_file=/some/other/pathPgを起動するときのようにparamを渡す可能性があるため、datadirの場所を尋ねて解析することすら信頼できません。
あなたがしたいことはPostgreSQLに尋ねることです:
SHOW hba_file;
このコマンドはスーパーユーザーセッションで実行する必要があるため、シェルスクリプトの場合は次のように記述できます。
psql -t -P format=unaligned -c 'show hba_file';
環境変数PGUSER、PGDATABASEなどを設定して、接続が正しいことを確認します。
はい、これはやや鶏と卵の問題です。ユーザーが接続できない場合(たとえば、編集を台無しにした後pg_hba.conf)pg_hba.conf、それを修正するために見つけることができません。
別のオプションは、psコマンドの出力を見て、postmaster dataディレクトリの引数-Dがそこに見えるかどうかを確認することです。例えば
ps aux | grep 'postgres *-D'
以来、pg_hba.confデータディレクトリ内になります(あなたは、Debian / Ubuntuのか、いくつかの誘導体と、使用してパッケージにしている場合を除きます)。
Debian / UbuntuパッケージからインストールされたPostgreSQLを使用するUbuntuシステムを特に対象にしている場合は、少し簡単になります。誰かのinitdb'da datadirがホームディレクトリにある、またはEnterpriseDB Pgが/ optにインストールされているなど、手作業でコンパイルされたソースPgに対処する必要はありません。Debian pg_wrapper/ 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引数が編集中などに一致するかどうかを確認します。