How To Install PostgreSQL 11 on Debian 11 / Debian 10

Posted on 200 views

This guide will walk you through the steps required to Install PostgreSQL 11 on Debian 11 / Debian 10. PostgreSQL is a powerful, highly-extensible database server written in C. It is the World’s most advanced relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance.

The first release of PostgreSQL 11 was on 2018-10-18 and you can check more details on the release page. Follow the few steps below to install PostgreSQL 11 on Debian 11 / Debian 10.

Step 1: Add PostgreSQL Repository

Start by ensuring everything is updated on your Debian 11 / Debian 10 system.

sudo apt update
[ -f /var/run/reboot-required ] && sudo reboot -f

Then Import the repository signing key:

sudo apt update
sudo apt install vim curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
curl -fsSL|sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg

Add the repository:

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

Step 2: Install PostgreSQL 11 on Debian 11 / Debian 10

Now install PostgreSQL 11 on Debian 11 / Debian 10 by running the command below.

sudo apt update
sudo apt install postgresql-11

The service is usually started after installation.

$ systemctl status [email protected]
 [email protected] - PostgreSQL Cluster 11-main
     Loaded: loaded (/lib/systemd/system/[email protected]; enabled-runtime; vendor preset: enabled)
     Active: active (running) since Wed 2022-05-18 20:12:39 UTC; 35s ago
    Process: 1070613 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 11-main start (code=exited, status=0/SUCCESS)
   Main PID: 1070618 (postgres)
      Tasks: 7 (limit: 2340)
     Memory: 16.8M
        CPU: 124ms
     CGroup: /system.slice/system-postgresql.slice/[email protected]
             ├─1070618 /usr/lib/postgresql/11/bin/postgres -D /var/lib/postgresql/11/main -c config_file=/etc/postgresql/11/main/postgresql.conf
             ├─1070620 postgres: 11/main: checkpointer
             ├─1070621 postgres: 11/main: background writer
             ├─1070622 postgres: 11/main: walwriter
             ├─1070623 postgres: 11/main: autovacuum launcher
             ├─1070624 postgres: 11/main: stats collector
             └─1070625 postgres: 11/main: logical replication launcher

May 18 20:12:36 systemd[1]: Starting PostgreSQL Cluster 11-main...
May 18 20:12:39 systemd[1]: Started PostgreSQL Cluster 11-main.

We need to set PostgreSQL admin user Password:

$ sudo su - postgres 
[email protected]:~$ psql -c "alter user postgres with password 'StrongDBPassword'" 
[email protected]:~$ exit

Step 3: Enable remote access (Optional)

By default, access to PostgreSQL database server is only from localhost.

$ ss -tunelp | grep 5432
tcp   LISTEN  0  128*      users:(("postgres",pid=15785,fd=3)) uid:111 ino:42331 sk:6 <->

Edit PostgreSQL 11 configuration file if you want to change listening address:

sudo vim /etc/postgresql/11/main/postgresql.conf

Add below line under CONNECTIONS AND AUTHENTICATION section.

listen_addresses = '*' # Don't do this if your server is on public network

You can also specify server IP Address

listen_addresses = '' # Recommended for LAN connections to DB Server

Restart postgresql after making a change

sudo systemctl restart postgresql


$ ss -tunelp | grep 5432
tcp     LISTEN   0        128    *       uid:108 ino:74999 sk:a <->                                                     
tcp     LISTEN   0        128                 [::]:5432             [::]:*       uid:108 ino:75000 sk:b v6only:1 <->                                            

If you have an active UFW firewall, allow port 5432 for network connections.

sudo ufw allow 5432/tcp

Step 4: Test PostgreSQL Installation

Add a test database user:

$ sudo su - postgres
[email protected]:~$ createuser test_user1

Add the test database and grant ownership to test_user1:

[email protected]:~$ createdb test_db -O test_user1

Set user password:

[email protected]:~$ psql 
psql (11.16 (Debian 11.16-1.pgdg110+1))
Type "help" for help.
postgres=# alter user test_user1 with password 'DBUserPassword';
postgres=# exit

Login to test_db database:

[email protected]:~$ psql -l  | grep test_db
test_db   | test_user1 | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

[email protected]:~$ psql test_db
psql (11.16 (Debian 11.16-1.pgdg110+1))
Type "help" for help.

Create a table and add some dummy data:

test_db=# create table test_table ( id int,first_name text, last_name text ); 
test_db=# insert into test_table (id,first_name,last_name) values (1,'John','Doe'); 

Show table data:

test_db=# select * from test_table;
  id | first_name | last_name 
   1 | John       | Doe
 (1 row)
 test_db=# exit

Let’s drop our test database to retain clean installation.

[email protected]:~$ dropdb test_db

That’s all. You have successfully installed PostgreSQL 11 on Debian 11 / Debian 10. Visit PostgreSQL official Documentation page for further reading.


Gravatar Image
A systems engineer with excellent skills in systems administration, cloud computing, systems deployment, virtualization, containers, and a certified ethical hacker.