Saat Anda menginstal PostgreSQL, secara default koneksi ke database menggunakan TCP/IP tidak diperbolehkan.
Saat Anda mencoba menghubungkan dari klien ke database PostgreSQL jarak jauh menggunakan perintah psql, Anda mungkin mendapatkan pesan kesalahan “psql:could not connect to server:Connection failed”.
Dalam contoh berikut, dari mesin klien, kami mencoba menyambungkan ke database PostgreSQL yang berjalan di server 192.168.102.1. Seperti yang Anda lihat dari output, dengan jelas dikatakan bahwa database PostgreSQL jarak jauh tidak menerima koneksi.
# psql -U postgres -h 192.168.102.1 psql: could not connect to server: Connection refused Is the server running on host "192.168.102.1" and accepting TCP/IP connections on port 5432?
Untuk mengaktifkan koneksi TCP/IP untuk database PostgreSQL, Anda harus mengikuti dua langkah yang disebutkan di bawah ini.
1. Ubah pg_hba.conf untuk menambahkan Catatan Otentikasi Klien
Di server database PostgreSQL, secara default, Anda akan melihat catatan berikut menjelang akhir /var/lib/pgsql/data/pg_hba.conf. Seperti yang ditunjukkan di bawah, ia hanya menerima koneksi dari localhost.
# IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 ident
Tambahkan baris berikut ke server pg_hba.conf. Ini akan memungkinkan koneksi dari alamat ip "192.168.101.20" (Ini adalah klien dalam contoh kita). Jika Anda ingin mengizinkan koneksi dari beberapa mesin klien di jaringan tertentu, tentukan alamat jaringan di sini dalam format alamat CIDR.
# vi /var/lib/pgsql/data/pg_hba.conf host all all 192.168.101.20/24 trust
Berikut ini adalah berbagai format catatan otentikasi klien yang didukung dalam file pg_hba.conf. Kami menggunakan format #2 dari daftar ini.
- metode otentikasi pengguna database lokal [opsi-otentikasi]
- pengguna database host CIDR-address authentication-method [authentication-option]
- pengguna database hostssl CIDR-address authentication-method [authentication-option]
- pengguna database hostnossl CIDR-address authentication-method [authentication-option]
Alih-alih format “CIDR-address”, Anda juga dapat menentukan ip-address dan network mask di kolom terpisah menggunakan format record berikut.
- host database pengguna alamat IP IP-mask otentikasi-metode [authentication-option]
- pengguna database hostssl alamat IP IP-mask otentikasi-metode [authentication-option]
- pengguna database hostnossl alamat IP IP-mask otentikasi-metode [authentication-option]
2. Ubah Alamat Listen di postgresql.conf
Pada database server PostgreSQL, secara default, alamat listener akan menjadi localhost di file postgresql.conf seperti yang ditunjukkan di bawah ini.
# grep listen /var/lib/pgsql/data/postgresql.conf listen_addresses = 'localhost'
Ubah baris ini dan beri *. Jika Anda memiliki beberapa antarmuka di server, Anda juga dapat menentukan antarmuka tertentu untuk didengarkan.
# grep listen /var/lib/pgsql/data/postgresql.conf listen_addresses = '*'
3. Uji Koneksi Jarak Jauh
Sekarang, login ke mesin klien 192.168.101.20, dan lakukan koneksi jarak jauh psql ke server database PostgreSQL (192.168.102.1) seperti yang ditunjukkan di bawah ini. Kali ini, seharusnya berhasil.
# psql -U postgres -h 192.168.102.1 Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal. postgres=#
Juga, jika Anda tidak ingin menentukan nama host di parameter baris perintah setiap saat, Anda dapat mengatur alamat ip basis data PostgreSQL jarak jauh dalam nama variabel lingkungan PGHOST seperti yang ditunjukkan di bawah ini.
# export PGHOST=192.168.102.1 # psql -U postgres Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal. postgres=#