Postgresql adalah sistem basis data relasional objek sumber terbuka dengan lebih dari 30 tahun pengembangan aktif yang telah membuatnya mendapatkan reputasi yang kuat untuk keandalan, kekokohan fitur, dan kinerja. Postgres, adalah sistem manajemen basis data relasional sumber terbuka dan gratis yang menekankan ekstensibilitas dan kepatuhan SQL. Awalnya bernama POSTGRES, mengacu pada asal-usulnya sebagai penerus database Ingres yang dikembangkan di University of California, Berkeley. PostgreSQL digunakan sebagai penyimpanan data utama atau gudang data untuk banyak aplikasi web, seluler, geospasial, dan analitik. PostgreSQL dapat menyimpan data terstruktur dan tidak terstruktur dalam satu produk.
Periksa ini juga:
- Cara Menginstal &Mengonfigurasi Postgres 14 di FreeBSD 13
- Izin Postgres – Buat, Perbarui, Hapus Pengguna Basis Data
- Cara Menginstal dan Mengonfigurasi Postgres 13 di Centos 8
- Menjalankan Postgresql 14 dengan Docker dan Docker-Compose
- Cara Menginstal dan Mengonfigurasi Postgres 13 Ubuntu 20.04
- Cara Menginstal dan Mengonfigurasi Postgres 14 di Debian 11
- Cara Menginstal dan Mengonfigurasi Postgres 14 Ubuntu 20.04
- Cara Memasang dan Mengonfigurasi Postgres 14 di Fedora 34
- Cara Menginstal &Mengonfigurasi Postgres 14 di OpenSUSE Leap 15.3
Prasyarat
Untuk mengikuti, pastikan Anda memiliki yang berikut:
- Server berbasis Rocky Linux/ Alma Linux/Centos 8 atau RHEL 8
- Akses root ke server atau pengguna dengan akses root
- Akses internet dari server
- Pengetahuan dasar terminal Linux
Daftar isi
- Pastikan server terbaru
- Menginstal dan memulai Server Postgres
- Metode Otentikasi Peran dan Basis Data PostgreSQL
- Menghubungkan ke database postgres
- Mengonfigurasi instance postgres 14 untuk akses jarak jauh
- Pengelolaan pengguna
1. Pastikan server terbaru
Sebelum melanjutkan, izinkan kami memastikan bahwa server kami memiliki paket terbaru. Gunakan perintah ini:
$ sudo dnf -y update
Last metadata expiration check: 2:52:07 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
Dependencies resolved.
Nothing to do.
Complete!
2. Menginstal dan memulai Server Postgres
Secara default modul postgres akan mengaktifkan versi postgres yang lebih lama. Tetapi modul saat ini tidak menyertakan postgresql 14. Konfirmasikan dengan perintah ini:
$ sudo dnf module list postgresql
Last metadata expiration check: 2:52:36 ago on Wed 06 Oct 2021 01:26:21 AM UTC.
CentOS 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
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Menginstal dari modul akan menginstal versi postgres (10) yang lebih lama tetapi bukan itu yang kami inginkan.
Kami akan menggunakan repo yang disediakan oleh tim postgres untuk menyiapkan repositori untuk postgres 14 kemudian menginstal paket.
Mari kita Instal RPM repositori menggunakan perintah ini:
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Kemudian untuk menghindari konflik, mari kita nonaktifkan modul PostgreSQL bawaan:
sudo dnf -qy module disable postgresql
Terakhir instal server PostgreSQL 14:
sudo dnf install -y postgresql14-server
Mari kita juga menginstal paket Contrib yang menyediakan beberapa fitur tambahan untuk sistem database PostgreSQL:
sudo dnf install -y postgresql14-contrib
Setelah instalasi selesai, inisialisasi database PostgreSQL dengan perintah berikut:
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Initializing database ... OK
Mulai layanan postgres dengan perintah ini:
sudo systemctl start postgresql-14
Kemudian aktifkan layanan agar dimulai saat server di-boot ulang.
$ sudo systemctl enable postgresql-14
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-14.service → /usr/lib/systemd/system/postgresql-14.service.
Konfirmasikan bahwa Postgres sedang berjalan:
$ sudo systemctl status postgresql-14
● postgresql-14.service - PostgreSQL 14 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2021-10-06 04:26:52 UTC; 33s ago
Docs: https://www.postgresql.org/docs/14/static/
Process: 1018631 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 1018637 (postmaster)
Tasks: 8 (limit: 23800)
Memory: 17.2M
CGroup: /system.slice/postgresql-14.service
├─1018637 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
├─1018638 postgres: logger
├─1018640 postgres: checkpointer
├─1018641 postgres: background writer
├─1018642 postgres: walwriter
├─1018643 postgres: autovacuum launcher
├─1018644 postgres: stats collector
└─1018645 postgres: logical replication launcher
Oct 06 04:26:52 test-db-server systemd[1]: Starting PostgreSQL 14 database server...
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] LOG: redirecting log output to logging collector process
Oct 06 04:26:52 test-db-server postmaster[1018637]: 2021-10-06 04:26:52.204 UTC [1018637] HINT: Future log output will appear in directory "log".
Oct 06 04:26:52 test-db-server systemd[1]: Started PostgreSQL 14 database server.
Active: active (running)
menunjukkan bahwa layanan aktif dan berjalan.
Selanjutnya, mari kita verifikasi bahwa instalasi berhasil dengan menghubungkan ke server database PostgreSQL dan mencetak versinya:
sudo -u postgres psql -c "SELECT version();"
Keluaran:
$ sudo -u postgres psql -c "SELECT version();"
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 14.0 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1), 64-bit
(1 row)
3. Peran PostgreSQL dan Metode Otentikasi Basis Data
PostgreSQL menggunakan konsep yang disebut roles
untuk menangani otentikasi dan otorisasi klien. Secara default, Postgres diatur untuk menggunakan ident authentication
, artinya ia mengaitkan peran Postgres dengan akun sistem Unix/Linux yang cocok. Jika ada peran dalam Postgres, nama pengguna Unix/Linux dengan nama yang sama dapat masuk sebagai peran tersebut.
Prosedur instalasi membuat akun pengguna bernama postgres
yang terkait dengan postgres
default peran. Untuk menggunakan PostgreSQL, Anda dapat masuk ke akun tersebut.
PostgreSQL mendukung beberapa metode otentikasi. Metode yang paling umum digunakan adalah:
Trust
– Peran dapat terhubung tanpa kata sandi, selama kondisi yang ditentukan dalampg_hba.conf
terpenuhi.Password
– Peran dapat terhubung dengan memberikan kata sandi. Kata sandi dapat disimpan sebagaiscram-sha-256
,md5
, danpassword
(clear-text
).Ident
– Hanya didukung pada koneksi TCP/IP. Ia bekerja dengan mendapatkan nama pengguna sistem operasi klien, dengan pemetaan nama pengguna opsional.Peer
– Sama seperti Ident, tetapi hanya didukung pada koneksi lokal.
4. Menghubungkan ke database postgres
- Dengan Beralih ke
postres
pengguna
Beralih ke akun postgres di server Anda dengan mengetik ini di terminal;:
sudo -i -u postgres
Anda sekarang dapat mengakses prompt Postgres segera dengan mengetik:
$ psql
psql (14.0)
Type "help" for help.
postgres=#
Ini akan memasukkan Anda ke prompt PostgreSQL, dan dari sini Anda bebas berinteraksi dengan sistem manajemen basis data segera.
2. Dengan menjalankan perintah sebagai postgres
pengguna
Gunakan ini untuk menjalankan perintah secara langsung sebagai postgres
pengguna menggunakan sudo
sudo -u postgres psql
Keluaran:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
5. Mengonfigurasi instance postgres 14 untuk akses jarak jauh
Untuk mencapai ini, kami akan memodifikasi file konfigurasi postgres. Kita perlu membuka file dan menyesuaikan konfigurasi yang diperlukan. File konfigurasi utama untuk Postgresql 14 dapat ditemukan di jalur ini /var/lib/pgsql/14/data/pg_hba.conf
Mari ubah identifikasi rekan menjadi kepercayaan:
sed -i '/^local/s/peer/trust/' /var/lib/pgsql/14/data/pg_hba.conf
Ubah identifikasi identitas menjadi md5 untuk mengizinkan login kata sandi.
sed -i '/^host/s/ident/md5/' /var/lib/pgsql/14/data/pg_hba.conf
Tambahkan blok untuk mengizinkan akses dari mana saja:
Tambahkan konten ini ke file /var/lib/pgsql/14/data/pg_hba.conf
host all all 0.0.0.0/0 md5
Pastikan PostgreSQL mendengarkan di *
Tambahkan baris ini ke konfigurasi di sini /var/lib/pgsql/14/data/postgresql.conf
listen_addresses='*'
Aktifkan dan mulai ulang server postgresql untuk memuat ulang konfigurasi
sudo systemctl restart postgresql
sudo systemctl enable postgresql
6. Manajemen pengguna
Membuat Pengguna Super
Sekarang semuanya sudah diatur, mari kita buat pengguna super.
Hubungkan ke DB sebagai peran postres:
$ sudo -u postgres psql
psql (14.0)
Type "help" for help.
postgres=#
Buat pengguna super dengan nama root
:
CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
Keluaran:
postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
CREATE ROLE
postgres=# \du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
root | Superuser, Create role, Create DB | {}
postgres=#
Mengelola Pengguna Aplikasi
Gunakan ini untuk membuat database, buat pengguna, dan berikan pengguna itu semua akses ke database itu:
create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;
Lihat panduan komprehensif ini tentang manajemen pengguna dan izin di postgres di sini.
Menghubungkan ke instance dari host jarak jauh
Gunakan perintah ini untuk terhubung ke instance postgres dari mesin lokal:
psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'
# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'
Kesimpulan
Sampai saat ini kami telah berhasil menginstal Postgresql 14 pada server Cientos 8, melakukan beberapa konfigurasi dasar kemudian melakukan manajemen pengguna dasar.