GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengizinkan Koneksi Jarak Jauh ke Database PostgreSQL menggunakan psql

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=#

Linux
  1. Cara Masuk ke Database Postgresql dari Command-line

  2. Cara mencari database menggunakan phpMyAdmin

  3. Bagaimana cara menambahkan koneksi MySQL jarak jauh di linux?

  1. Cara Membuat Database di PostgreSQL

  2. Cara Mencadangkan dan Memulihkan Basis Data di PostgreSQL

  3. Cara Mengizinkan Koneksi Jarak Jauh ke Server Database MySQL

  1. Cara Menginstal PostgreSQL di Ubuntu 20.04

  2. Cara Menginstal PostgreSQL di Debian 10

  3. Cara Mengelola Host Windows Jarak Jauh menggunakan Ansible