他のサーバーからデータベースへのアクセスを許可するためのpg_hba.confファイルの構成


15

あるサーバーにpostgresデータベースがあり、別のサーバーからアクセスする必要があります。

pg_hba.confファイルを編集する必要がありますが、このファイルを編集する手順を理解しました。サーバーCentos

ファイルに次の行を追加する必要があります

host    all         all         10.0.2.12         255.255.255.255   trust

私はそれを見つけました var/lib/pgsql/data/

今、基本的に私はこれを行うための正しい手順がわからない

回答:


14

まず、指定されたpg_hba.confのバックアップコピーを作成します

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

そうすれば、台無しにした場合に古いバージョンを準備できます。tarアーカイブの優れた機能は、アクセス許可とディレクトリを保持することです。そのため、pg_hba.confが認識できないほど破損した場合。あなたはできる:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

これにより、以前に作成したアーカイブからバックアップpg_hba.confが復元されます。

実際の行の挿入に関して:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(注:コマンドを編集しました。ありがとうございます。bortzmeyer!)

それを行う必要があります。これはpg_hba.confに行を追加するだけであることに注意してください。変更する必要がある場合は、実際のエディターを使用する必要があります。viのように。学習曲線は少し急な場合がありますが、少なくとも基本を学んだ後は、遭遇するほとんどすべてのUNIX環境で非常に安全であるはずです。

軌道に戻ったので、次にpostgresqlデータベースを再起動してみてください。Centosマシンでは、これは次のように行われます。

sudo service postgresql restart

または、再起動せずに設定をリロードすることができます:

su - postgres
pg_ctl reload

これで、10.0.2.12からCentos-machines postrgresqlデータベースにアクセスできるはずです。


1
特権操作はリダイレクトによって行われるため、最後のコマンドのsudoは機能しません。リダイレクトは、sudoで実行するプログラム(この場合はエコー)ではなく、シェルによって処理されます。
ボルツマイヤー

いい視点ね!それは、sudoのように記述しなければならない「エコー『ホストすべてすべて10.0.2.12 255.255.255.255信頼』 >> /var/lib/pgsql/data/pg_hba.confは、」
ピーヒミーズ

理想的な方法は、管理者の場所にバージョン管理下に置くと、それを経由してSSHなど変更した後、それを展開するだろう
vfclistsを

1
pg_hba.confファイルのデフォルトの場所は、9.4では少し異なります:/var/lib/pgsql/9.4/data/pg_hba.conf
セルゲイVlasov

13

postgresql.confを編集して行を変更/追加することを忘れないでください

listen_addresses = '*'

Postgresqlはデフォルトでlocalhostをリッスンします


list_addressesの例は寛容すぎませんか?その複数のIPアドレス上のサーバで実行されている場合、すなわち公共ぽっかりセキュリティホールである、内部、VPNなど
vfclists
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.