How do I install PostgreSQL relational database management on RHEL 8 using the command line? How do I install and setup PostgreSQL on RHEL 8 server using application streams?
Introduction: PostgreSQL is a free and open source ORDBMS ( object-relational database management system). It is the world’s most advanced open source database. This page shows how to install PostgreSQL on RHEL 8 and configure other aspects of the database server.
How to install and setup PostgreSQL on RHEL 8
- Open a terminal Window
- Find version of PostgreSQL you want to install on RHEL 8:
sudo yum module list | grep postgresql - Install the default, PostgreSQL version 10 on RHEL 8:
sudo yum install @postgresql - Next initialize new PostgreSQL database cluster in RHEL 8:
sudo postgresql-setup --initdb
Let us see all commands in details.
How to see a list of all available PostgreSQL application streams on RHEL 8
Run the following yum command$ sudo yum module list | grep postgresql
How to install and use PostgreSQL on RHEL 8
In the previous step, we saw that RHEL 8 shipped with two Applications streams for PostgreSQL server. To install PostgreSQL 9.6, run:$ sudo yum install @postgresql:9.6
The default is PostgreSQL 10, so running the following yum command installs the latest stable version:$ sudo yum install @postgresql
How to initialize new PostgreSQL database cluster
The first action you perform after PostgreSQL server installation is to run the following command:$ sudo postgresql-setup --initdb
How to setup a password for postgres account
Run the following passwd command to setup a password:$ sudo passwd postgres
Sample outputs:
Changing password for user postgres. New password: Retype new password: passwd: all authentication tokens updated successfully.
How do I start/stop/restart the PostgreSQL server
You need to use the systemctl command:sudo systemctl start postgresql ## <-- start the server ##
sudo systemctl stop postgresql ## <-- stop the server ##
sudo systemctl restart postgresql ## <-- resstart the server ##
sudo systemctl status postgresql ## <-- get status of the server ##
How to enable the PostgreSQL server at boot time on RHEL 8
Again use the systemctl command as follows:$ sudo systemctl enable postgresql
How do I log in using psql?
You need to use the psql command. It is a terminal-based front-end to PostgreSQL server. It enables you to type in queries interactively. The installation script created a user named postgres. That is the default account for default database and roles. Let us log in as postgres using the sudo command:$ sudo -i -u postgres
Run it:$ psql
At postgres=# prompt type \q to quit from the command-line interface to PostgreSQL server. Did you notice you logged into PostgreSQL without any password? Let us fix this by creating HBA config:$ sudo vi /var/lib/pgsql/data/pg_hba.conf
Find lines that read as follows:
# IPv4 local connections: host all all 127.0.0.1/32 ident # IPv6 local connections: host all all ::1/128 ident |
Replace ident with scram-sha-256:
# IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256 |
Restart the postgresql server:$ sudo systemctl restart postgresql
How to create a new PostgreSQL user account
First create a Linux user account named tom:$ sudo useradd tom
$ sudo passwd tom
Sample outputs:
Changing password for user tom. New password: Retype new password: passwd: all authentication tokens updated successfully.
The postgres account is nothing but an administrative user for PostgreSQL server. So log in as postgres:$ sudo -i -u postgres
Run the following createuser command to creates a new PostgreSQL role for tom Linux user:$ createuser --interactive
Create a new user account with password for new role:$ createuser --interactive --pwprompt
Finally create a new database named jerry for tom user by log in as postgres admin user:$ sudo -i -u postgres
$ createdb -O tom jerry
Related: PostgreSQL add or create a user account and grant permission for database
How do I connect to jerry database with tom user?
Simply run the following commands:$ sudo -i -u tom
$ psql -d jerry -U tom
How to create a new table
Log in:$ psql -d jerry -U tom
Type the following SQL to create demo table:
CREATE TABLE demo( id serial PRIMARY KEY, email VARCHAR (100) UNIQUE NOT NULL, name VARCHAR (50) UNIQUE NOT NULL ); |
See info about the demo table:\d
OR\dt
Let us add some data to our table, run the following SQL:
INSERT INTO demo (id, email, name) VALUES (1, 'webmaster@cyberciti.biz', 'Vivek Gite'); INSERT INTO demo (id, email, name) VALUES (2, 'foo@bar.com', 'Foo Bar'); INSERT INTO demo (id, email, name) VALUES (3, 'roja@nixcraft.com', 'Roja T'); INSERT INTO demo (id, email, name) VALUES (4, 'marlena@gmail.net.in', 'Marlena John'); |
View data:
SELECT * FROM demo; |
Delete some data:
DELETE FROM demo WHERE id = 4; |
Update data:
UPDATE demo SET email = 'foo@gmail.com' WHERE id = 2; |
Conclusion
Congratulations. You successfully set up PostgreSQL server on RHEL 8 server. You also learned how to create users, database and tables. For more info see the official PostgreSQL docs here.