Mengkonfigurasi file pg_hba.conf untuk memungkinkan akses dari server lain ke database

15

Saya memiliki database postgres pada satu server dan saya perlu mengaksesnya dari server lain.

Saya perlu mengedit file pg_hba.conf, tetapi sekarang sudah tahu apa langkah-langkah untuk mengedit file ini. Server Centos

Saya perlu menambahkan baris berikut dalam file

host    all         all         10.0.2.12         255.255.255.255   trust

Saya menemukannya var/lib/pgsql/data/

Sekarang pada dasarnya saya tidak yakin apa langkah yang benar untuk melakukan ini

Elitmiar
sumber

Jawaban:

14

Pertama, ambil salinan cadangan dari pg_hba.conf yang diberikan

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

Dengan begitu, Anda memiliki versi yang lebih lama jika Anda gagal. Fitur arsip tar yang bagus adalah yang menjaga izin dan direktori. Jadi ketika pg_hba.conf rusak melebihi pengakuan. Kamu bisa:

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

Ini akan mengembalikan pg_hba.conf cadangan dari arsip yang Anda buat sebelumnya.

Adapun penyisipan baris yang sebenarnya:

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

(CATATAN: Perintah diedit. Terima kasih bortzmeyer!)

Harus melakukannya. Perhatikan bahwa ini hanya menambahkan baris ke pg_hba.conf. Jika Anda perlu mengubahnya, Anda harus menggunakan editor yang sebenarnya. Seperti vi. Kurva pembelajarannya bisa sedikit curam, tetapi setelah Anda mempelajari setidaknya dasar-dasarnya Anda harus cukup aman di sebagian besar setiap lingkungan unix yang Anda temui.

Sekarang saya kembali ke jalur selanjutnya Anda harus mencoba me-restart database postgresql Anda. Pada mesin Centos ini saya percaya dilakukan oleh:

sudo service postgresql restart

atau Anda bisa memuat ulang konfigurasi tanpa memulai ulang:

su - postgres
pg_ctl reload

Sekarang Anda harus dapat mengakses database postrgresql Centos-Machines Anda dari 10.0.2.12

pyhimys
sumber
1
Sudo dalam perintah terakhir tidak akan berfungsi karena operasi privilisasi dilakukan oleh pengalihan, yang ditangani oleh shell, bukan oleh program yang Anda jalankan dengan sudo (gema, dalam kasus ini).
bortzmeyer
Poin bagus! Ini harus ditulis sebagai sudo "echo 'host semua 10.0.2.12 255.255.255.255 trust' >>
/var/lib/pgsql/data/pg_hba.conf
Cara yang ideal adalah meletakkannya di bawah kontrol versi di lokasi admin dan menyebarkannya setelah mengubahnya melalui SSH dll
vfclists
1
Lokasi default file pg_hba.conf sedikit berbeda di 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Sergey Vlasov
13

Jangan lupa untuk mengedit postgresql.conf dan ubah / tambahkan baris

listen_addresses = '*'

Postgresql secara default mendengarkan di localhost

pengguna16233
sumber
Bukankah contoh list_addresses Anda terlalu permisif? Itu adalah celah keamanan yang menganga jika server berjalan pada beberapa IP, yaitu publik, internal, VPN dll.
vfclists