In this article, I'll give you a step-by-step guide on how to install the PostgreSQL database on Ubuntu 20.04.
First of all, you'll need to update your sources using
user@ubuntu:~$ sudo apt update
Once that's done go ahead and use the apt package manager to install postgrsql:
user@ubuntu:~$ sudo apt install postgresql postgresql-contrib
The above command will install the PostgreSQL database on your system. By default Postgres automatically creates a user with the name of postgres
, this user has full superuser access.
To access the psql
interface (psql is a command-line based front-end for Postgres
you can use psql to interface with Postgres) use the command below:
user@ubuntu:~$ sudo -u postgres psql
or you can use the postgres user that was created by Postgres upon installation and use the psql command from there.
user@ubuntu:~$ su postgres
postgres@ubuntu:~$ psql
Notice how the first command su postgres
changed the user to postgres. Once you run the psql
command an interface similar to the one below will show up, this is where you can run SQL and Postgres specific queries.
psql (12.9 (Ubuntu 12.9-0ubuntu0.20.04.1))
Type "help" for help.
postgres=#
Creating a new database
You can use the command shown below to create a user first:
postgres=# CREATE USER '<username>' WITH ENCRYPTED PASSWORD '<new-password>';
The above command will create a new user with a username and a password, make sure to change those to whatever you prefer (don't use <>
).
Once the user is created, we'll need to create a database.
postgres=# CREATE DATABASE '<db-name>';
The above command will create a new database (Make sure to change the <db-name>
). Now we need to grant access to this database to the user we created in the previous step.
postgres=# GRANT ALL PRIVILEGES ON DATABASE '<db-name>' TO '<username>';
Now that our database is created and a user has access to that database the basic step is done. But if you want your database to be accessible everywhere or only to a specific IP, keep reading.
Modifying connections to the database
Now that you have your database up and running you might want to modify who can have access to it. You can either allow everyone (which is not a good idea) or a specific set of IPs (using CIDR).
To achieve this we will need to edit the Postgres config which can be found in /etc/postgresql/12/main/
path may vary based on Postgres version.
user@ubuntu:~$ cd /etc/postgresql/12/main/
user@ubuntu:~$ ls
conf.d environment pg_ctl.conf pg_hba.conf pg_ident.conf postgresql.conf start.conf
As you can see there are many available files here, but the ones we are interested in are postgresql.conf
and pg_hba.conf
. Use the nano text editor to edit the postgresql.conf file.
user@ubuntu:~$ sudo nano postgresql.conf
You'll have to scroll down a bit until you see a section called CONNECTIONS AND AUTHENTICATION
it will look something like this:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = 'localhost,192.168.0.3' # what IP address(es) to listen on;
You'll need to assign the list of IPs that you want to have access to Postgres to listen_addresses
. Alternatively, you can set listen_addresses equal to '*'
which will mean that anyone on the internet can have access to our database (Bad idea).
Now save this file by pressing ctrl+x
and tying Y
and accepting the provided name.
Finally, we'll need to edit the pg_hba.conf
file. This file controls the client authentication. We'll add our database and user and what IP can authenticate with them. Previously what we did was, we specified who can make a connection to the database.
Open the pg_hba.conf
file using nano:
user@ubuntu:~$ sudo nano pg_hba.conf
At the bottom of the file specify your user and database and what IPs are allowed to authenticate.
host username db-name 192.168.0.0/24 md5
Make sure to change the username and db-name with the one you created and the IP address to the IP of your computer that you'll use to authenticate.
Finally, save the file using ctrl+x
then Y
and accept the provided file name.
You can use telnet command to check if you can make a connection to the db:
user@ubuntu:~$ telnet 192.168.0.2 5241
Change the IP with the Postgres server IP. 5241
is the default port for postgres.
And that's it. Thanks for reading.