FedoraRHEL Based

How To Install PostgreSQL on Fedora 41

Install PostgreSQL on Fedora 41

PostgreSQL, often simply called Postgres, is a powerful, open-source object-relational database system with a strong reputation for reliability, feature robustness, and performance. As Fedora 41 continues to gain popularity among Linux enthusiasts and professionals alike, many users are looking to harness the power of PostgreSQL on this cutting-edge platform. This guide will walk you through the process of installing PostgreSQL 16.3 on Fedora 41, covering everything from prerequisites to advanced configuration and troubleshooting.

PostgreSQL has become a go-to choice for developers and database administrators due to its advanced features, extensibility, and adherence to SQL standards. With Fedora 41’s focus on providing the latest stable software, it’s an excellent platform for running PostgreSQL.

In this tutorial, we’ll cover the installation of PostgreSQL 16.3, the most recent version available at the time of writing. This version brings performance improvements, enhanced security features, and better compatibility with modern applications.

Prerequisites

Before diving into the installation process, ensure your system meets the following requirements:

  • A Fedora 41 system with root or sudo access
  • At least 1GB of RAM (2GB or more recommended for optimal performance)
  • Minimum 512MB of free disk space (more depending on your database size)
  • An active internet connection for package downloads

It’s crucial to back up any existing data before proceeding with the installation, especially if you’re upgrading from a previous PostgreSQL version. Additionally, consider the storage requirements for your database and ensure you have sufficient space available in the /var/lib/pgsql directory, where PostgreSQL stores its data by default.

Storage Preparation

Proper storage configuration is essential for optimal PostgreSQL performance. Let’s set up the storage environment:

Directory Structure

PostgreSQL uses /var/lib/pgsql as its default data directory. Ensure this directory exists and has the correct permissions:

sudo mkdir -p /var/lib/pgsql
sudo chown -R postgres:postgres /var/lib/pgsql
sudo chmod 700 /var/lib/pgsql

File System Configuration

For best performance, consider using XFS or ext4 file systems. If you’re using a separate partition for PostgreSQL data, you can optimize it during creation:

sudo mkfs.xfs -f -d agcount=16 /dev/sdX

Replace /dev/sdX with your actual device name.

SELinux Considerations

Fedora uses SELinux by default. Ensure the PostgreSQL data directory has the correct SELinux context:

sudo semanage fcontext -a -t postgresql_db_t "/var/lib/pgsql(/.*)?"
sudo restorecon -Rv /var/lib/pgsql

Installation Process

Now that we’ve prepared our system, let’s proceed with the PostgreSQL installation.

Package Installation

Fedora 41 includes PostgreSQL in its default repositories. Install the core components and additional utilities:

sudo dnf install postgresql postgresql-server postgresql-contrib

This command installs the PostgreSQL server, client, and additional contributed modules that provide extra functionality.

Initial Configuration

After installation, initialize the database cluster:

sudo postgresql-setup --initdb

This command creates the initial database cluster, sets up system tables, and creates the default ‘postgres’ user and database.

Service Management

Managing the PostgreSQL service is crucial for maintaining your database system. Here’s how to control the PostgreSQL service on Fedora 41:

Starting PostgreSQL

Start the PostgreSQL service with:

sudo systemctl start postgresql

Enabling Automatic Startup

To ensure PostgreSQL starts automatically on system boot:

sudo systemctl enable postgresql

Verifying Service Status

Check the status of the PostgreSQL service:

sudo systemctl status postgresql

This command provides information about the service’s current state, recent log entries, and more.

Security Configuration

Securing your PostgreSQL installation is paramount. Let’s configure authentication and network security.

Authentication Setup

PostgreSQL uses the pg_hba.conf file to control client authentication. Edit this file to set up password policies and user access control:

sudo nano /var/lib/pgsql/data/pg_hba.conf

Modify the file to use MD5 or SCRAM-SHA-256 authentication for local connections:


# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5

Network Security

Configure the firewall to allow PostgreSQL connections:

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

Adjust SELinux settings to allow network connections:

sudo setsebool -P postgresql_can_connect_db 1

Database Administration

Now that PostgreSQL is installed and secured, let’s set up users and databases.

User Management

Create a new database user:

sudo -u postgres createuser --interactive

Follow the prompts to set up the new user. To set a password for the user:

sudo -u postgres psql
psql=# ALTER USER username WITH PASSWORD 'new_password';

Database Creation

Create a new database:

sudo -u postgres createdb mydatabase

To assign ownership of the database to a specific user:

sudo -u postgres psql
psql=# ALTER DATABASE mydatabase OWNER TO myuser;

Configuration Files

Understanding and configuring PostgreSQL’s main configuration files is crucial for optimal performance and security.

postgresql.conf

This file contains database cluster-wide settings. Edit it to adjust performance parameters:

sudo nano /var/lib/pgsql/data/postgresql.conf

Key parameters to consider:

  • max_connections: Sets the maximum number of concurrent connections
  • shared_buffers: Determines the amount of memory used for shared memory buffers
  • effective_cache_size: Estimates how much memory is available for disk caching

pg_hba.conf

We’ve already touched on this file for authentication setup. It controls which hosts can connect to which databases and users.

Verification and Testing

After configuration, it’s essential to verify that everything is working correctly.

Connection Testing

Connect to PostgreSQL using the psql command-line tool:

psql -U postgres -d postgres

If successful, you’ll see the PostgreSQL prompt.

Basic SQL Commands

Try some basic SQL commands to ensure the database is functioning:

CREATE TABLE test (id serial PRIMARY KEY, name varchar);
INSERT INTO test (name) VALUES ('Fedora 41');
SELECT * FROM test;

Troubleshooting Common Issues

If you encounter issues, check the PostgreSQL log files:

sudo tail -f /var/lib/pgsql/data/log/postgresql-*.log

Common issues include:

  • Permission problems: Ensure proper ownership and permissions on data directories
  • Port conflicts: Check if another service is using port 5432
  • Memory issues: Adjust shared_buffers and other memory-related parameters

Congratulations! You have successfully installed PostgreSQL. Thanks for using this tutorial for installing  PostgreSQL (RDBMS) on the Fedora 41 system. For additional or useful information, we recommend you check the official PostgreSQL website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button