How can I install PostgreSQL 12 on Debian 10 / Debian 9?. PostgreSQL is a powerful relational database management system used around the globe for running mission critical applications. PostgreSQL is based on POSTGRES 4.2. The PostgreSQL 12 was released for general use on 3rd October 2019. This guide will focus on guiding users on how to install PostgreSQL 12 on Debian 10 / Debian 9 Linux distribution.
Check available guides if you’re using a different flavor of Linux:
How To Install PostgreSQL 12 on CentOS 7 / CentOS 8
Installing PostgreSQL 12 on Ubuntu
Check PostgreSQL 12 new features and improvements in PostgreSQL 12 on the PostgreSQL 12 release notes page. Once you want to get started, follow below steps for installing PostgreSQL 12 on Debian 10 / Debian 9 Linux system.
Step 1: Update system
It is recommended to update your current system packages if it is a new server instance.
sudo apt update
sudo apt -y upgrade
sudo shutdown -r now
Step 2: Add PostgreSQL 12 repository
The GPG key used for signing packages needs to be imported to the system:
sudo apt update
sudo apt -y install gnupg2
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
After importing GPG key, add PostgreSQL repository:
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee /etc/apt/sources.list.d/pgdg.list
Step 3: Install PostgreSQL 12 on Debian 10 / Debian 9
Now the repository has been added successfully, update the package list and install PostgreSQL 12 on Debian 10 / Debian 9 Linux system.
sudo apt update
sudo apt -y install postgresql-12 postgresql-client-12
A successful installation prints a message that is similar to one shared in the next screenshot.

The PostgreSQL service is started and set to come up after every system reboot.
$ systemctl status postgresql.service ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Sun 2019-10-06 10:23:46 UTC; 6min ago Main PID: 8159 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 2362) CGroup: /system.slice/postgresql.service Oct 06 10:23:46 deb10 systemd[1]: Starting PostgreSQL RDBMS… Oct 06 10:23:46 deb10 systemd[1]: Started PostgreSQL RDBMS. $ systemctl status [email protected] ● [email protected] - PostgreSQL Cluster 12-main Loaded: loaded (/lib/systemd/system/[email protected]; indirect; vendor preset: enabled) Active: active (running) since Sun 2019-10-06 10:23:49 UTC; 5min ago Main PID: 9242 (postgres) Tasks: 7 (limit: 2362) CGroup: /system.slice/system-postgresql.slice/[email protected] ├─9242 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf ├─9254 postgres: 12/main: checkpointer ├─9255 postgres: 12/main: background writer ├─9256 postgres: 12/main: walwriter ├─9257 postgres: 12/main: autovacuum launcher ├─9258 postgres: 12/main: stats collector └─9259 postgres: 12/main: logical replication launcher Oct 06 10:23:47 deb10 systemd[1]: Starting PostgreSQL Cluster 12-main… Oct 06 10:23:49 deb10 systemd[1]: Started PostgreSQL Cluster 12-main. $ systemctl is-enabled postgresql enabled
Step 4: Test PostgreSQL Connection
During installation, a postgres user is created automatically. This user has full superadmin access to your entire PostgreSQL instance. Before you switch to this account, your logged in system user should have sudo privileges.
sudo su - postgres
Let’s reset this user password to a strong Password we can remember.
psql -c "alter user postgres with password '[email protected]'"
Start PostgreSQL prompt by using the command:
$ psql
Get connection details like below.
$ psql psql (12.0 (Debian 12.0-1.pgdg100+1)) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
Let’s create a test database and user to see if it’s working.
postgres=# CREATE DATABASE mytestdb; CREATE DATABASE postgres=# CREATE USER mytestuser WITH ENCRYPTED PASSWORD '[email protected]'; CREATE ROLE postgres=# GRANT ALL PRIVILEGES ON DATABASE mytestdb to mytestuser; GRANT
List created databases:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+---------+-------------------------
mytestdb | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | mytestuser=CTc/postgres
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
Connect to database:
postgres-# \c mytestdb You are now connected to database "mytestdb" as user "postgres".
Other PostgreSQL utilities installed such as createuser and createdb can be used to create database and users.
[email protected]:~$ createuser myuser --password Password: [email protected]:~$ createdb mydb -O myuser [email protected]:~$ psql -l
We can create and connect to a database on PostgreSQL server.
Step 5: Configure remote Connection
Installation of PostgreSQL only accepts connections from localhost. In ideal production environments, you’ll have a central database server and remote clients connecting to it – But of course within a private network (LAN).
To enable remote connections, edit PostgreSQL configuration file:
sudo nano /etc/postgresql/12/main/postgresql.conf
Uncomment line 59 and change the Listen address to accept connections within your networks.
# Listen on all interfaces
listen_addresses = '*'
# Listen on specified private IP address
listen_addresses = '192.168.10.11'
After the change, restart postgresql service.
sudo systemctl restart postgresql
Confirm Listening addresses.
# netstat -tunelp | grep 5432
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 111 112837 11143/postgres
tcp6 0 0 :::5432 :::* LISTEN 111 112838 11143/postgres
Step 6: Install pgAdmin4 Management Tool
If you want to manage your PostgreSQL database server from a web interface, then install pgAdmin4.
Install pgAdmin4 on Debian 10 / Debian 9
You have successfully installed PostgreSQL 12 on Debian 10 / Debian 9. Have a happy Database management and development with PostgreSQL.
Similar:
How to Install pgAdmin 4 on Ubuntu
How to Install pgAdmin 4 on CentOS 7
How to Install pgAdmin4 on FreeBSD 12
How to Install PostGIS on CentOS 7
Tags:
- Install PostgreSQL 12 on Debian 10
- Install PostgreSQL 12 on Debian 9
- Install PostgreSQL 12 on Debian
- PostgreSQL 12 installation on Debian 10 / Debian 9
- PostgreSQL 12 installation on Debian Linux