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に現在の場所を確認することです。postgresql.conf
initスクリプトが-c hba_file=/some/other/path
Pgを起動するときのように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
引数が編集中などに一致するかどうかを確認します。