PostgreSQL adalah sistem manajemen basis data relasional sumber terbuka yang populer. Dikenal karena keandalannya, ia mendapatkan popularitas karena ketangguhan, fleksibilitas, dan kinerjanya. PostgreSQL digunakan untuk mengelola database dan berbagai aplikasi web dan analitik. Pada saat penulisan artikel ini, PostgreSQL 13 adalah versi terbaru. Versi ini hadir dengan peningkatan signifikan pada sistem pengindeksan dan pencarian yang menguntungkan database besar.
Dalam posting ini, kami akan menunjukkan cara menginstal dan mengamankan PostgreSQL di Rocky Linux 8.
Prasyarat
- Server yang menjalankan Rocky Linux 8 di Atlantic.Net Cloud Platform
- Kata sandi root yang dikonfigurasi di server Anda
Langkah 1 – Buat Server Cloud Atlantic.Net
Pertama, masuk ke Server Cloud Atlantic.Net Anda. Buat server baru, pilih Rocky Linux 8 sebagai sistem operasi dengan RAM minimal 2GB. Hubungkan ke Server Cloud Anda melalui SSH dan masuk menggunakan kredensial yang disorot di bagian atas halaman.
Setelah Anda masuk ke server Anda, jalankan perintah berikut untuk memperbarui sistem dasar Anda dengan paket terbaru yang tersedia.
dnf update -y
Langkah 2 – Tambahkan Repositori PostgreSQL 13
dnf module list postgresql
Anda akan melihat bahwa hanya PostgreSQL versi 10 yang tersedia:
Rocky Linux 8 - AppStream Name Stream Profiles Summary postgresql 9.6 client, server [d] PostgreSQL server and client module postgresql 10 [d] client, server [d] PostgreSQL server and client module postgresql 12 client, server [d] PostgreSQL server and client module postgresql 13 client, server [d] PostgreSQL server and client module
Untuk menginstal PostgreSQL versi terbaru, Anda perlu menginstal repo PostgreSQL ke sistem Anda.
Anda dapat menginstalnya menggunakan perintah berikut:
dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Setelah repo dibuat, Anda dapat melanjutkan ke langkah berikutnya.
Langkah 3 – Instal PostgreSQL 13 di Rocky Linux 8
Sekarang, perbarui repositori Anda menggunakan perintah berikut:
dnf update -y
Selanjutnya, nonaktifkan repo PostgreSQL default menggunakan perintah berikut:
dnf -qy module disable postgresql
Selanjutnya, instal PostgreSQL versi terbaru dengan menjalankan perintah berikut:
dnf install postgresql13 postgresql13-server
Setelah PostgreSQL 13 diinstal, Anda akan mendapatkan output berikut:
Last metadata expiration check: 0:00:08 ago on Fri 22 Oct 2021 08:38:58 AM UTC. Dependencies resolved. =============================================================================================================================================== Package Architecture Version Repository Size =============================================================================================================================================== Installing: postgresql13 x86_64 13.4-1PGDG.rhel8 pgdg13 1.5 M postgresql13-server x86_64 13.4-1PGDG.rhel8 pgdg13 5.5 M Installing dependencies: postgresql13-libs x86_64 13.4-1PGDG.rhel8 pgdg13 414 k Transaction Summary =============================================================================================================================================== Install 3 Packages Total download size: 7.4 M Installed size: 31 M Is this ok [y/N]: y
Selanjutnya, inisialisasi database PostgreSQL dengan perintah berikut:
/usr/pgsql-13/bin/postgresql-13-setup initdb
Contoh keluaran:
Initializing database ... OK
Selanjutnya, mulai layanan PostgreSQL dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start postgresql-13 systemctl enable postgresql-13
Anda dapat memeriksa status PostgreSQL dengan perintah berikut:
systemctl status postgresql-13
Anda akan mendapatkan output berikut:
● postgresql-13.service - PostgreSQL 13 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2021-10-22 08:39:47 UTC; 7s ago Docs: https://www.postgresql.org/docs/13/static/ Process: 36412 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 36417 (postmaster) Tasks: 8 (limit: 11411) Memory: 16.8M CGroup: /system.slice/postgresql-13.service ├─36417 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/ ├─36419 postgres: logger ├─36421 postgres: checkpointer ├─36422 postgres: background writer ├─36423 postgres: walwriter ├─36424 postgres: autovacuum launcher ├─36425 postgres: stats collector └─36426 postgres: logical replication launcher
ss -antpl | grep 5432
Anda akan mendapatkan output berikut:
LISTEN 0 128 127.0.0.1:5432 0.0.0.0:* users:(("postmaster",pid=36417,fd=7)) LISTEN 0 128 [::1]:5432 [::]:* users:(("postmaster",pid=36417,fd=6))
Langkah 4 – Tetapkan Kata Sandi untuk Pengguna Postgres
Untuk mengatur kata sandi, masuk ke PostgreSQL dengan perintah berikut:
su - postgres
Selanjutnya, atur kata sandi aman dengan perintah berikut:
psql -c "alter user postgres with password 'securepassword'"
Selanjutnya, keluar dari shell PostgreSQL menggunakan perintah berikut:
exit
Langkah 5 – Ubah Metode Otentikasi PostgreSQL
Anda dapat mengubahnya dengan mengedit file konfigurasi utama PostgreSQL:
nano /var/lib/pgsql/13/data/pg_hba.conf
Temukan baris berikut:
local all all peer
Dan, ganti dengan baris berikut:
local all all scram-sha-256
Simpan dan tutup file, lalu mulai ulang layanan PostgreSQL untuk menerapkan perubahan.
systemctl restart postgresql-13
Langkah 6 – Buat Database dan Pengguna di PostgreSQL
Pertama, masuk ke shell PostgreSQL dengan perintah berikut:
sudo -u postgres psql
Anda akan mendapatkan output berikut:
could not change directory to "/root": Permission denied psql (13.4) Type "help" for help. postgres=#
Selanjutnya, buat pengguna PostgreSQL baru bernama user1 menggunakan perintah berikut:
CREATE USER user1 WITH CREATEDB CREATEROLE PASSWORD 'passoword';
Untuk memverifikasi pengguna PostgreSQL, jalankan:
\du
Anda akan mendapatkan output berikut:
List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {} user1 | Create role, Create DB | {}
Untuk membuat database PostgreSQL baru bernama user1db, jalankan:
CREATE DATABASE user1db OWNER user1;
Untuk memverifikasi database PostgreSQL, jalankan:
\l
Anda akan mendapatkan output berikut:
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres user1db | user1 | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Kesimpulan
Selamat! Anda telah berhasil menginstal dan mengamankan PostgreSQL di Rocky Linux 8. Untuk alasan keamanan, selalu disarankan untuk menginstal PostgreSQL versi terbaru di lingkungan produksi. Cobalah hosting VPS dari Atlantic.Net!