Saturday, November 16, 2024
Google search engine
HomeData Modelling & AIInstall PostgreSQL 13 on CentOS 8 | RHEL 8

Install PostgreSQL 13 on CentOS 8 | RHEL 8

In this guide we will explore the installation of PostgreSQL 13 on CentOS 8 | RHEL 8 Linux server. PostgreSQL is a powerful, open source object-relational database system that safely store and scale the most complicated data workloads. The PostgreSQL database system is designed to assure users reliability, data integrity, robust feature set and extensibility. There is a large community behind its development to ensure innovation and strong reputation.

Install PostgreSQL 13 on CentOS 8 | RHEL 8

As of this article update PostgreSQL 13 is available running production workloads. All the software packages are available in the YUM repository supported officially by PostgreSQL team the installation process is simplified.

Before you start the installation ensure you’re running the latest release of CentOS 8 | RHEL 8 Linux system. You can run the yum update command to pull the latest updates.

sudo yum -y update
sudo systemctl reboot

Once the system is rebooted begin installation of PostgreSQL 13 on CentOS 8 | RHEL 8 server.

Step 1: Add PostgreSQL Yum Repository

The YUM repository supports both CentOS and RHEL family of Linux distributions. Once it is added, it will provide automatic updates for all supported versions of PostgreSQL throughout the support lifetime of PostgreSQL.

Run the following commands to add the repository that provides PostgreSQL packages to your CentOS / RHEL 8 server.

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Accept installation when prompted by pressing the y key in your keyboard.

....
Transaction Summary
==================================================================================================================================================================
Install  1 Package

Total size: 11 k
Installed size: 11 k
Is this ok [y/N]: y

Step 2: Install PostgreSQL 13 on CentOS 8 | RHEL 8

We need to disable the PostgreSQL AppStream repository on CentOS 8 | RHEL 8 Linux which contains some other version of PostgreSQL.

sudo dnf -qy module disable postgresql

Confirm the list of enabled repositories.

$ sudo dnf repolist
repo id                                                                         repo name
appstream                                                                       Rocky Linux 8 - AppStream
baseos                                                                          Rocky Linux 8 - BaseOS
extras                                                                          Rocky Linux 8 - Extras
pgAdmin4                                                                        pgadmin4
pgdg-common                                                                     PostgreSQL common RPMs for RHEL / Rocky 8 - x86_64
pgdg11                                                                          PostgreSQL 11 for RHEL / Rocky 8 - x86_64
pgdg12                                                                          PostgreSQL 12 for RHEL / Rocky 8 - x86_64
pgdg13                                                                          PostgreSQL 13 for RHEL / Rocky 8 - x86_64
pgdg14                                                                          PostgreSQL 14 for RHEL / Rocky 8 - x86_64
pgdg15                                                                          PostgreSQL 15 for RHEL / Rocky 8 - x86_64

Check to see if PostgreSQL 13 packages are available on the repository.

$ sudo yum search postgresql13
Last metadata expiration check: 0:11:06 ago on Thu 05 May 2022 11:57:30 PM EAT.
============================================================================== Name Exactly Matched: postgresql13 ==============================================================================
postgresql13.x86_64 : PostgreSQL client programs and libraries
================================================================================== Name Matched: postgresql13 ==================================================================================
postgresql13-contrib.x86_64 : Contributed source and binaries distributed with PostgreSQL
postgresql13-devel.x86_64 : PostgreSQL development header files and libraries
postgresql13-docs.x86_64 : Extra documentation for PostgreSQL
postgresql13-libs.x86_64 : The shared libraries required for any PostgreSQL clients
postgresql13-llvmjit.x86_64 : Just-in-time compilation support for PostgreSQL
postgresql13-odbc.x86_64 : PostgreSQL ODBC driver
postgresql13-plperl.x86_64 : The Perl procedural language for PostgreSQL
postgresql13-plpython3.x86_64 : The Python3 procedural language for PostgreSQL
postgresql13-pltcl.x86_64 : The Tcl procedural language for PostgreSQL
postgresql13-server.x86_64 : The programs needed to create and run a PostgreSQL server
postgresql13-test.x86_64 : The test suite distributed with PostgreSQL

Now install PostgreSQL 13 packages on your CentOS 8 | RHEL 8 server – both server and client.

sudo dnf install postgresql13 postgresql13-server

Agree to install if you’re okay with it.

....
Transaction Summary
================================================================================================================================================================================================
Install  3 Packages

Total download size: 7.4 M
Installed size: 31 M
Is this ok [y/N]: y

GPG key repository is also required.

Step 3: Initialize and start database service

PostgreSQL database initialization is required before you can use the database server.

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

The database main configuration file is  /var/lib/pgsql/13/data/postgresql.conf

$ ls  /var/lib/pgsql/13/data/
base    pg_commit_ts  pg_ident.conf  pg_notify    pg_snapshots  pg_subtrans  PG_VERSION  postgresql.auto.conf
global  pg_dynshmem   pg_logical     pg_replslot  pg_stat       pg_tblspc    pg_wal      postgresql.conf
log     pg_hba.conf   pg_multixact   pg_serial    pg_stat_tmp   pg_twophase  pg_xact

Start the PostgreSQL database server and set it to start at boot.

$ sudo systemctl enable --now postgresql-13
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql-13.service → /usr/lib/systemd/system/postgresql-13.service.

Check the service status to confirm it is running.

$ systemctl status postgresql-13
● postgresql-13.service - PostgreSQL 13 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2023-07-09 23:35:30 CEST; 37s ago
     Docs: https://www.postgresql.org/docs/13/static/
  Process: 1860 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 1865 (postmaster)
    Tasks: 8 (limit: 12210)
   Memory: 17.3M
   CGroup: /system.slice/postgresql-13.service
           ├─1865 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
           ├─1867 postgres: logger
           ├─1869 postgres: checkpointer
           ├─1870 postgres: background writer
           ├─1871 postgres: walwriter
           ├─1872 postgres: autovacuum launcher
           ├─1873 postgres: stats collector
           └─1874 postgres: logical replication launcher

Jul 09 23:35:30 centos-01.geeksforgeeks.org systemd[1]: Starting PostgreSQL 13 database server...
Jul 09 23:35:30 centos-01.geeksforgeeks.org postmaster[1865]: 2020-07-09 23:35:30.180 CEST [1865] LOG:  redirecting log output to logging collector process
Jul 09 23:35:30 centos-01.geeksforgeeks.org postmaster[1865]: 2020-07-09 23:35:30.180 CEST [1865] HINT:  Future log output will appear in directory "log".
Jul 09 23:35:30 centos-01.geeksforgeeks.org systemd[1]: Started PostgreSQL 13 database server.

Step 4: Set PostgreSQL admin user’s password

Update the PostgreSQL admin user password.

$ sudo su - postgres 
]$ psql -c "alter user postgres with password 'StrongDBPassword'"
ALTER ROLE

Step 5: Enabling remote Database connections (Optional)

Edit the file /var/lib/pgsql/13/data/postgresql.conf and set Listen address to your server IP address or “*” for all interfaces.

$ sudo vi /var/lib/pgsql/13/data/postgresql.conf
# line 59
listen_addresses = '192.168.10.10'

Also set PostgreSQL to accept remote connections

$ sudo vi /var/lib/pgsql/13/data/pg_hba.conf

# Accept from anywhere (not recommended)
host all all 0.0.0.0/0 md5

# Accept from trusted subnet (Recommended setting)
host all all 192.168.18.0/24 md5

Restart the database service after saving the changes.

sudo systemctl restart postgresql-13

Test connection using the psql command while providing username and optionally database name.

$ psql -U <dbuser> -h <serverip> -p 5432 <dbname>

Step 6: Install pgAdmin 4 Web interface

pgAdmin is the leading Open Source feature-rich PostgreSQL administration and development platform that runs on Linux, Unix, Mac OS X, and Windows. Here is the link for the installation of pgAdmin4 on CentOS.

How To Install pgAdmin 4 on CentOS 8 Linux

Read the official documentation for more in-depth knowledge on PostgreSQL database administration.

RELATED ARTICLES

Most Popular

Recent Comments