How To Install PostgreSQL 11 / 10 on Ubuntu 18.04 & Linux Mint 19


PostgreSQL (aka Postgres) is an object-relational database management system (ORDBMS), available for Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, and Mac OS.

PostgreSQL is released under the PostgreSQL License, a free and open source permissive software license, developed by the PGDG (PostgreSQL Global Development Group), a group of individual volunteers and corporate companies.

Here, we will go through steps on how to install PostgreSQL 11 / 10 on Ubuntu 18.04 / Ubuntu 16.04 & Linux Mint 19 / Linux Mint 18.

Add PostgreSQL repository

PostgreSQL publishes deb packages for Ubuntu, and their packages are fresher than those available in OS base repository.

Import the PostgreSQL signing key.

wget -q -O- | sudo apt-key add -

Add the PostgreSQL repository to /etc/apt/sources.list.d/postgresql.list file.

### Ubuntu 18.04 / LinuxMint 19 ###

echo "deb bionic-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list

### Ubuntu 16.04 / LinuxMint 18 ###

echo "deb xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list

Install PostgreSQL

Execute the below command to update the repository index.

sudo apt-get update

Install the PostgreSQL package using the apt command.

### PostgreSQL 11 ###

sudo apt-get install -y postgresql-11

### PostgreSQL 10 ###

sudo apt-get install -y postgresql-10

Control PostgreSQL service

To start PostgreSQL service, run:

sudo systemctl start postgresql

To stop PostgreSQL service, run:

sudo systemctl stop postgresql

To restart PostgreSQL service, run:

sudo systemctl restart postgresql

To check the running status of PostgreSQL service, run:

sudo systemctl status postgresql


 postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Sat 2019-02-23 11:30:32 IST; 3min 5s ago
 Main PID: 5285 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 2323)
   CGroup: /system.slice/postgresql.service

Feb 23 11:30:32 desktop systemd[1]: Starting PostgreSQL RDBMS...
Feb 23 11:30:32 desktop systemd[1]: Started PostgreSQL RDBMS.

Configure PostgreSQL Server

PostgreSQL listens on loopback adapter ( only. Sometimes the application hosted on external may need to connect to the database. For that, we need to configure PostgreSQL to listen on all adaptors.

### PostgreSQL 11 ###

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

### PostgreSQL 10 ###

sudo nano /etc/postgresql/10/main/postgresql.conf

Set the listen_addresses to * or .


Restart PostgreSQL service.

sudo systemctl restart postgresql

Confirm the PostgreSQL listening on port 5432 using netstat command.

sudo netstat -antup | grep 5432


tcp        0      0  *               LISTEN      6518/postgres
tcp6       0      0 :::5432                 :::*                    LISTEN      6518/postgres

READ: netstat command not found on Ubuntu – Quick Fix

Access PostgreSQL

To manage the database, you need to log in as the postgres user.

sudo su -l postgres

Use the psql, an interactive shell for working with PostgreSQL database.



postgres@server:~$ psql
psql (11.2 (Ubuntu 11.2-1.pgdg18.04+1))
Type "help" for help.


Secure PostgreSQL database

We will now set a password for Linux user (postgres) as well as DB administrator (postgres).

Set password for Linux user (postgres)

sudo passwd postgres


raj@server:~$ sudo passwd postgres
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Set password for DB administrator (postgres)

su - postgres

On psql shell, run below command to change database admin password.

postgres=# password


postgres=# password postgres


postgres=# password postgres
Enter new password:
Enter it again:

PostgreSQL DB Commands

The syntax for creating a database is:

$ su - postgres

$ createdb test

Log in to DB.

$ psql test

The syntax for creating a user is:


Check whether the user has been created or not.

test=# du


test=# du
                                   List of roles
 Role name |                         Attributes                         | Member of
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 raj       | Superuser                                                  | {}

Log in with the user “raj”.

psql -h localhost -d test -U raj


psql (11.2 (Ubuntu 11.2-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.


The syntax for listing databases:

test=# l


test=# 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
 test      | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)

That’s All. You have successfully installed PostgreSQL 11 / 10 on Ubuntu 18.04 / Ubuntu 16.04 & Linux Mint 19 / Linux Mint 18.