In this guide we are going to install Postgresql 13 in Ubuntu 20.04
Postgresql is an open source object-relational database system with over 30 years of active development that has earned it a strong reputation for reliability, feature robustness, and performance. Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance. It was originally named POSTGRES, referring to its origins as a successor to the Ingres database developed at the University of California, Berkeley. PostgreSQL is used as the primary data store or data warehouse for many web, mobile, geospatial, and analytics applications. PostgreSQL can store structured and unstructured data in a single product.
Also Check:
- Postgres Permissions – Create, Update, Delete Database Users
- How to Install and Configure Postgres 14 Ubuntu 20.04
- How to Install and Configure Postgres 14 on Centos 8
- How to Install and Configure Postgres 13 on Centos 8
- Running Postgresql 14 with Docker and Docker-Compose
- How to Install and Configure Postgres 13 Ubuntu 20.04
- How to Install and Configure Postgres 14 on Debian 11
- How to Install and Configure Postgres 14 on Fedora 34
- How to Install & Configure Postgres 14 on OpenSUSE Leap 15.3
Prerequisites
To follow along, ensure you have the following:
- Ubuntu 20.04 server
- Root access to the server or user with root access
- Internet access from the server
- Knowledge of Linux terminal
Ensure your system is up to date
Let’s refresh your server’s local package index using this command:
|
|
Then we upgrade the packages in our system with this:
|
|
Installing Postgres 13
Postgres is provided in the default Ubuntu repositories. To check the version provides, use this command:
|
|
The default packages provided by the default repositories are postgres 12. If you are interested in Postgres 12 you can install with the following commands. The -contrib
package that adds some additional utilities and functionality:
|
|
Since we are looking to install Postgres 13, we will need to add an additional repository that provide the packages.
Create the file repository configuration using this command:
|
|
Then import the repository signing key:
|
|
Now let’s update the package lists:
|
|
Then we install the specific version of postgres we want. Use postgresql-13
instead of postgresql
:
|
|
Once the installation is successful, Postgres 13 will be started.
Use this command to check the service status:
|
|
Next, let’s verify the installation by connecting to the PostgreSQL database server and checking its version. Use this command:
|
|
Output:
|
|
PostgreSQL Roles and Databases Authentication Methods
PostgreSQL uses a concept called roles
to handle client authentication and authorization. By default, Postgres is set up to use ident authentication
, meaning that it associates Postgres roles with a matching Unix/Linux system account. If a role exists within Postgres, a Unix/Linux username with the same name is able to sign in as that role.
The installation procedure created a user account called postgres that is associated with the default postgres role. In order to use PostgreSQL, you can log in to that account.
PostgreSQL supports multiple authentication methods . The most commonly-used methods are:
Trust
- A role can connect without a password, as long as the conditions defined in thepg_hba.conf
are met.Password
- A role can connect by providing a password. The passwords can be stored asscram-sha-256
,md5
, andpassword
(clear-text
).Ident
- Only supported on TCP/IP connections. It works by obtaining the client’s operating system user name, with an optional user name mapping.Peer
- Same as Ident, but it is supported on local connections only.
Connecting to postgres database
- By Switching to
postres
user
Switch over to the postgres account on your server by typing:
|
|
You can now access a Postgres prompt immediately by typing:
|
|
This will log you into the PostgreSQL prompt, and from here you are free to interact with the database management system right away.
- By running the command as postgres user
Use this to run the command directly as the postgres
user using sudo
|
|
Configuring postgres instance for remote access
By default postgres is only set up to be accessed locally. This is not ideal if we want to access our server from another host. In this section we are going to configure postgres to allow access from remote hosts.
Postgres 13 configuration file can be found in this path/etc/postgresql/13/main/pg_hba.conf
Change peer identification to trust
Use this command to change the peer
to <meta charset="utf-8">trust
|
|
Change ident identification to md5
To allow password login, change ident
to md5
for each host config
|
|
Add a block to allow access from everywhere
Add this content to the file /etc/postgresql/13/main/pg_hba.conf
to allow all hosts password access:
|
|
Ensure PostgreSQL is listening on *
Add this line to the config here /etc/postgresql/13/main/postgresql.conf
to allow postgres to listen on all hosts
|
|
To apply the configurations, we need to restart the postgres 13 service.
Enable and restart postgresql server to reload the configs:
|
|
User management
Create Super user
It would be better if we created a super user to administer the postgres service. This is that one user that has permissions to manage other users and databases.
Connect to the DB as postres
role
|
|
Create super user with name root
using this command:
|
|
Check the user if its been created and granted necessary privileges:
|
|
Managing application users
Use this to create a database, create a user and grant that user all accesss to that database:
|
|
Checkout this comprehensive guide on user and permission management in postgres here.
Connecting to the instance from remote host
Use this command to test that you can connect:
|
|
Conclusion
Up to this point we have managed to install Postgresql 13 on an Ubuntu server, do some basic configurations then do basic user management.