シェルからpg_hba.confへのパスを取得したいと思います。パスはPostgreSQLのバージョンによって異なります。たとえば、8.4および9.1の場合:
/etc/postgresql/8.4/main/pg_hba.conf
/etc/postgresql/9.1/main/pg_hba.conf
pg_config
コマンドを試しましたが、この情報が含まれていないようです。
これにより、pg_hba.conf
およびその他のPostgreSQL構成ファイルを編集用に開くための統一コマンドを使用できます。
私はbashを使用しています。
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
がどこにあるかを尋ねるか、システム管理者にそれがどこにあるかを尋ねることです。 Pgの起動時にinitスクリプトがpostgresql.conf
のようなパラメータを渡す可能性があるため、datadirの場所を確認して-c hba_file=/some/other/path
を解析することすら信頼できません。
あなたがしたいことはPostgreSQLに尋ねることです:
SHOW hba_file;
このコマンドはスーパーユーザーセッションで実行する必要があるため、シェルスクリプトの場合は次のように記述できます。
psql -t -P format=unaligned -c 'show hba_file';
環境変数PGUSER
、PGDATABASE
などを設定して、接続が正しいことを確認します。
はい、これはやや鶏卵の問題です。ユーザーが接続できない場合(たとえば、pg_hba.conf
の編集を台無しにした後)、修正するためのpg_hba.conf
が見つかりません。それ。
別のオプションは、ps
コマンドの出力を見て、ポストマスターデータディレクトリ引数-D
が表示されているかどうかを確認することです。
ps aux | grep 'postgres *-D'
pg_hba.conf
はデータディレクトリ内にあるため(Debian/Ubuntuまたはその派生物を使用しており、そのパッケージを使用している場合を除く)。
Debian/UbuntuパッケージからインストールされたPostgreSQLを使用するUbuntuシステムを特に対象にしている場合は、少し簡単になります。誰かのinitdb
'da datadirがホームディレクトリにある、または/ DBにインストールされたEnterpriseDB Pgなど、ソースから手作業でコンパイルされたPgを扱う必要はありません。pg_wrapper
、Debian/UbuntuマルチバージョンPgマネージャー、PostgreSQLは pg_lsclusters
コマンド from 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バージョンのデータディレクトリが複数ある場合は、データベースサイズを調べる必要があります。ps
から実行中のpostgresのコマンドラインをチェックして、データディレクトリ-D
引数が一致するかどうかを確認します編集している場所など.
これは私がそれを行う方法です:
john@Host:~$ ls /etc/postgresql
9.1
john@Host:~$ Sudo vim /etc/postgresql/9.1/main/pg_hba.conf
パスは次のようなものであるため:/etc/postgresql/[VERSION]/main/pg_hba.conf
構成ファイルの検出に次を使用しています。
$(ls /etc/postgresql/*/main/pg_hba.conf)
$(ls /etc/postgresql/*/main/postgresql.conf)
デフォルトのビジュアルエディター(vim、emacs、nano、joeなど)を使用して正しいpg_hba.conf
を編集するのは簡単です。
$VISUAL /etc/postgresql/$(ls /etc/postgresql)/main/pg_hba.conf
データベースに問い合わせてください:
$ psql -U postgres
postgres=# SHOW config_file;