How to install PostgreSQL 12 on Fedora 31/30/29

This guide will discuss installing PostgreSQL 12 on Fedora 31/30/29. PostgreSQL is an open source database server that was created to be reliable, robust, and suitable for performance deployment. PostgreSQL 12 has been released for use October 3, 2019 With many new features.

If you are using another version of Linux, check out the available guides:

Install PostgreSQL 12 on Ubuntu

Install PostgreSQL 12 on Debian

Install PostgreSQL 12 on CentOS 7 / CentOS 8

Let’s start installing PostgreSQL 12 on Fedora 31/30/29.

Step 1: Update the system

Make sure the system packages are up to date:

sudo dnf install -y vim bash-completion wget
sudo dnf update -y

Since you may have a kernel update, it is recommended that you reboot your system after the upgrade

sudo reboot

Step 2: Add the PostgreSQL Yum repository

Add the PostgreSQL Yum repository to your Fedora system by running the following command:

Fedora 31:

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-31-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 30:

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-30-x86_64/pgdg-fedora-repo-latest.noarch.rpm

Fedora 29:

sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/F-29-x86_64/pgdg-fedora-repo-latest.noarch.rpm

When prompted to confirm the installation, press ÿ key.

Last metadata expiration check: 0:01:25 ago on Sat 12 Oct 2019 06:52:54 AM UTC.
pgdg-fedora-repo-latest.noarch.rpm                                                                                  21 kB/s | 9.7 kB     00:00    
Dependencies resolved.
===================================================================================================================================================
 Package                                  Architecture                   Version                        Repository                            Size
===================================================================================================================================================
Installing:
 pgdg-fedora-repo                         noarch                         42.0-5                         @commandline                         9.7 k

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

Total size: 9.7 k
Installed size: 9.7 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                           1/1 
  Installing       : pgdg-fedora-repo-42.0-5.noarch                                                                                            1/1 
  Verifying        : pgdg-fedora-repo-42.0-5.noarch                                                                                            1/1 

Installed:
  pgdg-fedora-repo-42.0-5.noarch                                                                                                                   

Complete!

Step 3: Install PostgreSQL 12 on Fedora 31/30/29

After adding the PostgreSQL Repository to the Fedora system, install the PostgreSQL 12 Server / Client package:

sudo dnf install postgresql12-server postgresql12

Agree to install.

Last metadata expiration check: 0:01:17 ago on Sat 12 Oct 2019 07:00:29 AM UTC.
Dependencies resolved.
===================================================================================================================================================
 Package                                   Architecture                 Version                                 Repository                    Size
===================================================================================================================================================
Installing:
 postgresql12-server                       x86_64                       12.0-1PGDG.f30                          pgdg12                       5.1 M
Installing dependencies:
 postgresql12                              x86_64                       12.0-1PGDG.f30                          pgdg12                       1.5 M
 postgresql12-libs                         x86_64                       12.0-1PGDG.f30                          pgdg12                       393 k

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

Total download size: 7.0 M
Installed size: 32 M
Is this ok [y/N]: y

Step 4: Initialize the database and enable autostart

Now that the database package is installed, initialize the database by running the following command

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

Then start and enable the service to start on startup

sudo systemctl enable --now postgresql-12

Confirm the service status.

$ systemctl status postgresql-12
● postgresql-12.service - PostgreSQL 12 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2019-10-12 07:08:57 UTC; 12s ago
     Docs: https://www.postgresql.org/docs/12/static/
  Process: 1506 ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 1511 (postmaster)
    Tasks: 8 (limit: 2354)
   Memory: 15.9M
   CGroup: /system.slice/postgresql-12.service
           ├─1511 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
           ├─1512 postgres: logger   
           ├─1514 postgres: checkpointer   
           ├─1515 postgres: background writer   
           ├─1516 postgres: walwriter   
           ├─1517 postgres: autovacuum launcher   
           ├─1518 postgres: stats collector   
           └─1519 postgres: logical replication launcher   

Oct 12 07:08:57 fed30.novalocal systemd[1]: Starting PostgreSQL 12 database server...
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.760 UTC [1511] LOG:  starting PostgreSQL 12.0 on x86_64-pc-linux-gnu, compil>
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.762 UTC [1511] LOG:  listening on IPv6 address "::1", port 5432
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.762 UTC [1511] LOG:  listening on IPv4 address "127.0.0.1", port 5432
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.767 UTC [1511] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.>
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.774 UTC [1511] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.782 UTC [1511] LOG:  redirecting log output to logging collector process
Oct 12 07:08:57 fed30.novalocal postmaster[1511]: 2019-10-12 07:08:57.782 UTC [1511] HINT:  Future log output will appear in directory "log".
Oct 12 07:08:57 fed30.novalocal systemd[1]: Started PostgreSQL 12 database server.

If you have a running firewall service and remote clients should connect to the database server, then allow the PostgreSQL service.

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

Step 5: Enable remote access to PostgreSQL (optional)

If you have an “application” connected to the database server over the network, edit the file /var/lib/pgsql/12/data/postgresql.conf And set the “listening address” to the server IP address or “*All interfaces.

$ sudo vim /var/lib/pgsql/12/data/postgresql.conf 
listen_addresses = '*'

Also set PostgreSQL to accept remote connections from allowed hosts.

$ sudo vim /var/lib/pgsql/11/data/pg_hba.conf

# Accept from anywhere
host all all 0.0.0.0/0 md5

# Accept from trusted subnet
host all all 10.10.10.0/24 md5

After making changes, restart the PostgreSQL 12 service.

sudo systemctl restart postgresql-12

Step 6: Set the password of the PostgreSQL administrator user

Set the PostgreSQL administrator user password.

$ sudo su - postgres
$ psql -c "alter user postgres with password 'StrongPassword'"

Where Strong password Is the new password for the postgres user.

Step 7: Install pgAdmin 4 Web Management

If you need an easy way to manage a PostgreSQL database server (similar to MySQL’s phpMyAdmin), consider installing pgAdmin4.

Install pgAdmin 4 on Fedora

Enjoy running PostgreSQL 12 on Fedora Linux. The relevant guidelines are:

Install PostgreSQL 12 on Ubuntu

Install PostgreSQL 12 on Debian

Install PostgreSQL 12 on CentOS 7 / CentOS 8

Sidebar