PostgreSQL is an open source, powerful, resilient and fault tolerant relational database management system powering many mission critical applications. PostgreSQL database is based on POSTGRES 4.2. As of this article update the latest stable release of PostgreSQL is version 13. All the new features, improvements and bug fixes report for PostgreSQL 13 is available in the official release page.

Here are some notable new features:

  • Improvements from de-duplication of B-tree index entries – Space savings and performance gains from
  • Queries that use aggregates or partitioned tables gets improved performance.
  • Incremental sorting
  • Better query planning when using extended statistics
  • Parallelized vacuuming of indexes

Install PostgreSQL 13 on Debian 10 | Debian 9

If you follow the next steps outlined in this article you should get a running and working installation of PostgreSQL 13 on Debian 10 | Debian 9 Linux machine.

It is recommended to update your system and all installed packages before you proceed.

sudo apt update
sudo apt -y upgrade

Reboot the server thereafter.

sudo reboot

Step 2: Add PostgreSQL 12 repository

Before configuring the APT repository import the GPG key used for signing packages:

sudo apt update
sudo apt -y install gnupg2
wget --quiet -O - | sudo apt-key add -

After importing GPG key, add PostgreSQL repository to your Debian system.

echo "deb `lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list

Cat the file created to check its contents:

$ cat /etc/apt/sources.list.d/pgdg.list
deb buster-pgdg main

Step 3: Install PostgreSQL 13 on Debian 10 | Debian 9

Now that the repository has been added successfully update the package list and install PostgreSQL 13 on Debian 10 / Debian 9 Linux machine. The server can be running in the cloud, on premise hardware or any other valid virtualization environment.

sudo apt update

And lastly initiate the installation of PostgreSQL 13 on Debian 10 | Debian 9:

sudo apt -y install postgresql-13 postgresql-client-13

Start the database server using the following command:

sudo pg_ctlcluster 13 main start

Confirm service status and the configuration file being used.

$ sudo pg_ctlcluster 13 main status
pg_ctl: server is running (PID: 4209)
/usr/lib/postgresql/13/bin/postgres "-D" "/var/lib/postgresql/13/main" "-c" "config_file=/etc/postgresql/13/main/postgresql.conf"

You can also use systemctl command to check status of the service.

$ systemctl status [email protected][email protected] - PostgreSQL Cluster 13-main
   Loaded: loaded (/lib/systemd/system/[email protected]; enabled-runtime; vendor preset: enabled)
   Active: active (running) since Fri 2020-10-30 11:27:01 CET; 2min 11s ago
 Main PID: 4209 (postgres)
    Tasks: 7 (limit: 4580)
   Memory: 18.1M
   CGroup: /system.slice/system-postgresql.slice/[email protected]
           ├─4209 /usr/lib/postgresql/13/bin/postgres -D /var/lib/postgresql/13/main -c config_file=/etc/postgresql/13/main/postgresql.conf
           ├─4211 postgres: 13/main: checkpointer
           ├─4212 postgres: 13/main: background writer
           ├─4213 postgres: 13/main: walwriter
           ├─4214 postgres: 13/main: autovacuum launcher
           ├─4215 postgres: 13/main: stats collector
           └─4216 postgres: 13/main: logical replication launcher

Oct 30 11:26:59 debian systemd[1]: Starting PostgreSQL Cluster 13-main...
Oct 30 11:27:01 debian systemd[1]: Started PostgreSQL Cluster 13-main.

Start PostgreSQL prompt by using the command:

$ sudo su - postgres
[email protected]:~$ psql
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.


Perform test operations:

postgres=# exit
[email protected]:~$ createuser c4geeks
[email protected]:~$ createdb testdb -O c4geeks

[email protected]:~$ psql -l
                                  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
 testdb    | c4geeks  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)

Connect to the database:

[email protected]:~$ psql testdb
psql (13.0 (Debian 13.0-1.pgdg100+1))
Type "help" for help.


Set user password:

testdb=#  alter user c4geeks with password 'StrongDBPassw0rd';

Drop the database:

testdb=# \q
[email protected]:~$ dropdb testdb

I hope you have a blast developing with PostgreSQL 13 database server on Debian Linux machine.

More articles on Debian:

Install and Configure Zabbix Server on Debian 10 (Buster)

Install Oracle Java 14 (OpenJDK 14) on UbuntuDebian

How To Join Ubuntu / Debian To Active Directory (AD) domain

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!

As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.


Please enter your comment!
Please enter your name here