PostgreSQL atau Postgres adalah sistem manajemen database relasional open source. PostgreSQL memiliki banyak fitur canggih yang memungkinkan Anda membuat aplikasi web yang kompleks.

Dalam tutorial ini, kami akan menunjukkan kepada Anda bagaimana menginstal PostgreSQL di CentOS 7 dan menjelajahi dasar-dasar administrasi database.

Sebelum melanjutkan dengan tutorial ini, pastikan Anda masuk sebagai user dengan hak istimewa sudo.

Install PostgreSQL di CentOS 7

Pada saat penulisan artikel ini, versi terbaru PostgreSQL yang tersedia dari repositori resmi Centos adalah PostgreSQL versi 9.2.23.

Untuk menginstal PostgreSQL di server Centos, ikuti langkah-langkah di bawah ini:

  1. Install PostgreSQL
    sudo yum install postgresql-server postgresql-contrib
  2. Inisialisasi database PostgreSQL dengan perintah berikut:
    sudo postgresql-setup initdb
  3. Untuk memulai layanan PostgreSQL dan mengaktifkannya untuk memulai saat boot cukup ketik:
    sudo systemctl start postgresql
    sudo systemctl enable postgresql
  4. Verifikasi installasi PostgreSQL dengan mencoba koneksi ke  PostgreSQL server dengan perintah psql,
    sudo -u postgres psql -c "SELECT version();"

    Outputnya akan terlihat seperti ini:

    PostgreSQL 9.2.23 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16), 64-bit
    (1 row)

Install PostgreSQL dari repositori PostgreSQL

Pada saat penulisan artikel ini, versi terbaru PostgreSQL tersedia dari repositori resmi PostgreSQL adalah PostgreSQL versi 10.4. Sebelum melanjutkan dengan langkah berikutnya, Anda harus mengunjungi halaman Repository Yum PostgreSQL dan memeriksa apakah ada versi baru yang tersedia.

Ikuti langkah-langkah di bawah ini untuk menginstal versi PostgreSQL terbaru di server CentOS Anda:

Aktifkan repositori PostgreSQL

Untuk mengaktifkan repositori PostgreSQL cukup instal file rpm repositori:

sudo yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm

Install PostgreSQL

Setelah repositori diaktifkan, instal paket server PostgreSQL dan PostgreSQL dengan:

sudo yum install postgresql10-server postgresql10-contrib

Inisialisasi Database

Untuk menginisialisasi tipe database PostgreSQL

sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Initializing database ... OK

Start PostgreSQL

Untuk memulai layanan PostgreSQL dan mengaktifkannya untuk memulai saat boot:

sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10

Verifikasi Instalasi PostgreSQL

Untuk memverifikasi instalasi, kita akan mencoba untuk terhubung ke server database PostgreSQL menggunakan tool psql dan mencetak versi server:

sudo -u postgres /usr/pgsql-10/bin/psql -c "SELECT version();"
PostgreSQL 10.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)

PostgreSQL Role dan Metode Otentikasi

Izin akses database dalam PostgreSQL ditangani dengan konsep peran. Role (peran) dapat mewakili user database atau sekelompok user database.

PostgreSQL mendukung banyak metode otentikasi. Yang paling umum digunakan adalah:

  • Trust – Dengan metode ini, peran dapat terhubung tanpa kata sandi, selama kriteria yang ditentukan dalam pg_hba.conf terpenuhi.
  • Password – Peran dapat terhubung dengan memberikan kata sandi. Kata sandi dapat disimpan sebagai scram-sha-256md5 dan password (clear-text)
  • Ident – Metode ini hanya didukung pada koneksi TCP / IP. Bekerja dengan mendapatkan nama pengguna sistem operasi klien, dengan pemetaan nama pengguna opsional.
  • Peer – Sama seperti Ident tetapi hanya didukung pada koneksi lokal.

Otentikasi klien PostgreSQL didefinisikan dalam file konfigurasi bernama pg_hba.conf. Secara default untuk koneksi lokal, PostgreSQL diatur untuk menggunakan metode otentikasi peer.

Pengguna postgres dibuat secara otomatis ketika menginstal PostgreSQL. Pengguna ini adalah superuser untuk instance PostgreSQL dan itu setara dengan root di MySQL.

Untuk masuk ke server PostgreSQL sebagai postgres, terlebih dahulu Anda harus beralih ke user postgres dan kemudian Anda dapat mengakses prompt PostgreSQL menggunakan utilitas psql:

sudo su - postgres
psql

Dari sini Anda dapat berinteraksi dengan instance PostgreSQL. Untuk keluar dari shell PostgreSQL ketik perintah berikut:

\q

Anda juga dapat mengakses prompt PostgreSQL tanpa mengalihkan pengguna menggunakan perintah sudo:

sudo -u postgres psql

Pengguna postgres biasanya hanya digunakan dari host lokal dan disarankan untuk tidak mengatur password untuk pengguna postgresini.

Membuat Role dan Database PostgreSQL

Anda dapat membuat peran baru dari baris perintah menggunakan perintah createuser. Hanya superusers dan user dengan hak istimewa CREATEROLE yang dapat membuat peran baru.

Dalam contoh berikut, kita akan membuat peran baru bernama dona sebuah database bernama donadb dan memberikan hak istimewa pada database.

  1. Perintah berikut akan membuat peran baru bernama dona:
    sudo su - postgres -c "createuser dona"
  2. Buat Database PostgreSQL baru. Buat database baru bernama donadb menggunakan perintah createdb:
    sudo su - postgres -c "createdb donadb"
  3. Untuk memberikan izin kepada pengguna dona pada database yang telah kita buat di langkah sebelumnya, sambungkan ke shell PostgreSQL:
    sudo -u postgres psql

    dan jalankan kueri berikut :

    grant all privileges on database donadb to dona;

Aktifkan remote access ke server PostgreSQL

Secara default, server PostgreSQL hanya listen pada antarmuka lokal 127.0.0.1. Untuk mengaktifkan akses jarak jauh ke server PostgreSQL, buka file konfigurasi postgresql.conf dan tambahkan listen_addresses = '*' di bagian CONNECTIONS AND AUTHENTICATION.

sudo nano /etc/postgresql/10/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

simpan file dan restart layanan PostgreSQL dengan:

sudo service postgresql restart

Verifikasi perubahan dengan utilitas ss

ss -nlt | grep 5432
LISTEN   0         128                 0.0.0.0:5432             0.0.0.0:*
LISTEN   0         128                    [::]:5432                [::]:*

Seperti yang Anda lihat dari output di atas, server PostgreSQL listen pada semua interface(0.0.0.0).

Langkah terakhir adalah mengkonfigurasi server untuk menerima koneksi jarak jauh dengan mengedit file pg_hba.conf.

Berikut adalah beberapa contoh yang menunjukkan berbagai kasus penggunaan:

sudo nano /etc/postgresql/10/main/pg_hba.conf
 TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                    md5
# IPv4 local connections:
host    all             all             0.0.0.0/0            md5
# IPv6 local connections:
host    all             all             ::0/0                 md5
# All IPs
host    all             dona              all                 trust

Kesimpulan

Anda telah belajar cara menginstal dan mengkonfigurasi PostgreSQL di server CentOS 7.