GNU/Linux >> Tutoriels Linux >  >> Fedora

Comment installer et configurer Postgres 14 sur Fedora 34

Il s'appelait à l'origine POSTGRES, faisant référence à ses origines en tant que successeur de la base de données Ingres développée à l'Université de Californie à Berkeley. PostgreSQL est utilisé comme magasin de données principal ou entrepôt de données pour de nombreuses applications Web, mobiles, géospatiales et analytiques. PostgreSQL peut stocker des données structurées et non structurées dans un seul produit.

Dans ce guide, nous allons installer Postgresql 14 dans Fedora 34.

Contenu associé

  • Autorisations Postgres – Créer, mettre à jour, supprimer des utilisateurs de base de données
  • Comment installer et configurer Postgres 14 sur Centos 8
  • Comment installer et configurer Postgres 13 sur Centos 8
  • Exécuter Postgresql 14 avec Docker et Docker-Compose
  • Comment installer et configurer Postgres 13 Ubuntu 20.04
  • Comment installer et configurer Postgres 14 sur Debian 11
  • Comment installer et configurer Postgres 14 Ubuntu 20.04
  • Comment installer et configurer Postgres 14 sur OpenSUSE Leap 15.3

Prérequis

Pour suivre, assurez-vous d'avoir les éléments suivants :

  1. Mise à jour du serveur Fedora 34
  2. Accès root au serveur ou utilisateur avec accès root
  3. Accès Internet depuis le serveur
  4. Connaissance de base du terminal Linux

Table des matières

  1. Assurez-vous que le serveur est à jour
  2. Installation et démarrage du serveur Postgres
  3. Méthodes d'authentification des rôles et des bases de données PostgreSQL
  4. Connexion à la base de données postgres
  5. Configuration de l'instance postgres 14 pour l'accès à distance
  6. Gestion des utilisateurs

1. Assurez-vous que le serveur est à jour

Avant de continuer, assurons-nous que notre serveur dispose de packages à jour. Utilisez cette commande :

$ sudo dnf -y update
Last metadata expiration check: 2:55:24 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

2. Installation et démarrage du serveur Postgres

Le module fedora dnf postgres contient une installation Postgres 14 mais ce n'est pas celle par défaut. Vérifions le module Postges sur Fedora en utilisant cette commande :

$ sudo dnf module list postgresql
Last metadata expiration check: 2:56:45 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Fedora Modular 34 - x86_64
Name                                                              Stream                                                        Profiles                                                                 Summary
postgresql                                                        9.6                                                           client, server [d]                                                       PostgreSQL module
postgresql                                                        10                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        11                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        12                                                            client, server                                                           PostgreSQL module
postgresql                                                        13                                                            client, server                                                           PostgreSQL module

Fedora Modular 34 - x86_64 - Updates
Name                                                              Stream                                                        Profiles                                                                 Summary
postgresql                                                        9.6                                                           client, server [d]                                                       PostgreSQL module
postgresql                                                        10                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        11                                                            client, server [d]                                                       PostgreSQL module
postgresql                                                        12                                                            client, server                                                           PostgreSQL module
postgresql                                                        13                                                            client, server                                                           PostgreSQL module
postgresql                                                        14                                                            client, server                                                           PostgreSQL module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Cela signifie que pour l'utiliser, vous devez l'activer. Réinitialisez d'abord le module postgres afin que nous n'ayons pas de valeur par défaut

sudo dnf module reset postgresql

Activez ensuite postgres 14 avec cette commande :

$ sudo dnf module enable postgresql:14
Last metadata expiration check: 3:03:33 ago on Tue 26 Oct 2021 12:05:29 PM UTC.
Dependencies resolved.
================================================================================================================================================================================================================================================================================
 Package                                                           Architecture                                                     Version                                                             Repository                                                         Size
================================================================================================================================================================================================================================================================================
Enabling module streams:
 postgresql                                                                                                                         14

Transaction Summary
================================================================================================================================================================================================================================================================================

Is this ok [y/N]: y
Complete!

Installons maintenant Postgresql 14 et le package Contrib qui fournit plusieurs fonctionnalités supplémentaires pour le système de base de données PostgreSQL :

sudo dnf install -y postgresql-server postgresql-contrib

Une fois l'installation terminée, initialisez la base de données PostgreSQL avec la commande suivante :

$ sudo postgresql-setup initdb
WARNING: using obsoleted argument syntax, try --help
WARNING: arguments transformed to: postgresql-setup --initdb --unit postgresql
 * Initializing database in '/var/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log

Démarrez maintenant le service :

sudo systemctl start postgresql

Activez ensuite le service pour qu'il démarre au redémarrage du serveur :

$ sudo systemctl enable postgresql
Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /usr/lib/systemd/system/postgresql.service.

Vérifiez que Postgres 14 est en cours d'exécution :

$ sudo systemctl status postgresql
● postgresql.service - PostgreSQL database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
     Active: active (running) since Tue 2021-10-26 15:18:53 UTC; 46s ago
    Process: 17645 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS)
   Main PID: 17647 (postmaster)
      Tasks: 8 (limit: 4603)
     Memory: 15.7M
        CPU: 47ms
     CGroup: /system.slice/postgresql.service
             ├─17647 /usr/bin/postmaster -D /var/lib/pgsql/data
             ├─17648 postgres: logger
             ├─17650 postgres: checkpointer
             ├─17651 postgres: background writer
             ├─17652 postgres: walwriter
             ├─17653 postgres: autovacuum launcher
             ├─17654 postgres: stats collector
             └─17655 postgres: logical replication launcher

Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Starting PostgreSQL database server...
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] LOG:  redirecting log output to logging collector process
Oct 26 15:18:52 ip-10-2-40-182.us-west-2.compute.internal postmaster[17647]: 2021-10-26 15:18:52.998 UTC [17647] HINT:  Future log output will appear in directory "log".
Oct 26 15:18:53 ip-10-2-40-182.us-west-2.compute.internal systemd[1]: Started PostgreSQL database server.

Le Active: active (running) indique que le service est opérationnel.

Vérifions ensuite que l'installation a réussi en se connectant au serveur de base de données PostgreSQL et en imprimant sa version :

sudo -u postgres psql -c "SELECT version();"

Sortie :

$ sudo -u postgres psql -c "SELECT version();"
could not change directory to "/home/fedora": Permission denied
                                                   version
--------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.0 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1), 64-bit
(1 row)

3. Méthodes d'authentification des rôles et des bases de données PostgreSQL

PostgreSQL utilise un concept appelé roles pour gérer l'authentification et l'autorisation du client. Par défaut, Postgres est configuré pour utiliser ident authentication , ce qui signifie qu'il associe des rôles Postgres à un compte système Unix/Linux correspondant. Si un rôle existe dans Postgres, un nom d'utilisateur Unix/Linux portant le même nom peut se connecter avec ce rôle.

La procédure d'installation a créé un compte utilisateur appelé postgres qui est associé au postgres par défaut rôle. Pour utiliser PostgreSQL, vous pouvez vous connecter à ce compte.

PostgreSQL prend en charge plusieurs méthodes d'authentification. Les méthodes les plus couramment utilisées sont :

  • Trust – Un rôle peut se connecter sans mot de passe, tant que les conditions définies dans le pg_hba.conf sont remplies.
  • Password – Un rôle peut se connecter en fournissant un mot de passe. Les mots de passe peuvent être stockés sous la forme scram-sha-256 , md5 , et password (clear-text ).
  • Ident – Uniquement pris en charge sur les connexions TCP/IP. Il fonctionne en obtenant le nom d'utilisateur du système d'exploitation du client, avec un mappage de nom d'utilisateur facultatif.
  • Peer – Identique à Ident, mais il n'est pris en charge que sur les connexions locales.

4. Connexion à la base de données postgres

  1. En passant à postres utilisateur

Basculez vers le compte postgres sur votre serveur en tapant ceci dans le terminal ; :

sudo -i -u postgres

Vous pouvez désormais accéder immédiatement à une invite Postgres en tapant :

$ psql
psql (14.0)
Type "help" for help.

postgres=#

Cela vous connectera à l'invite PostgreSQL, et à partir de là, vous serez libre d'interagir immédiatement avec le système de gestion de base de données.

2. En exécutant la commande en tant que postgres utilisateur

Utilisez ceci pour exécuter la commande directement en tant que postgres utilisateur utilisant sudo

sudo -u postgres psql

Sortie :

$ sudo -u postgres psql
psql (14.0)
Type "help" for help.

postgres=#

5. Configuration de l'instance postgres 14 pour l'accès à distance

Pour y parvenir, nous allons modifier les fichiers de configuration de postgres. Nous devons ouvrir les fichiers et ajuster les configurations sont nécessaires. Le fichier de configuration principal pour Postgresql 14 se trouve dans ce chemin /var/lib/pgsql/14/data/pg_hba.conf

Changeons l'identification des pairs en confiance :

sed -i '/^local/s/peer/trust/' /var/lib/pgsql/data/pg_hba.conf

Remplacez l'identification par md5 pour autoriser la connexion par mot de passe.

sed -i '/^host/s/ident/md5/' /var/lib/pgsql/data/pg_hba.conf

Ajoutez un bloc pour autoriser l'accès depuis n'importe où :

Ajoutez ce contenu au fichier /var/lib/pgsql/data/pg_hba.conf

host    all             all             0.0.0.0/0                md5

Assurez-vous que PostgreSQL écoute sur *

Ajoutez cette ligne à la configuration ici /var/lib/pgsql/data/postgresql.conf

listen_addresses='*'

Activer et redémarrer le serveur postgresql pour recharger les configurations

sudo systemctl restart postgresql
sudo systemctl enable postgresql

6. Gestion des utilisateurs

Créer un superutilisateur

Maintenant que tout est configuré, créons un super utilisateur.
Connectez-vous à la base de données en tant que rôle postres :

$ sudo -u postgres psql
psql (14.0)
Type "help" for help.

postgres=#

Créer un super utilisateur avec le nom root :

CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';

Sortie :

postgres=# CREATE ROLE root WITH LOGIN SUPERUSER CREATEDB CREATEROLE PASSWORD 'passwordhere';
CREATE ROLE
postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 root      | Superuser, Create role, Create DB                          | {}

postgres=#

Gestion des utilisateurs de l'application

Utilisez ceci pour créer une base de données, créer un utilisateur et accorder à cet utilisateur tous les accès à cette base de données :

create database app_db_name;
create user app_user with encrypted password 'dbpassword';
grant all privileges on database app_db_name to app_user;

Consultez ce guide complet sur la gestion des utilisateurs et des autorisations dans postgres ici.

Connexion à l'instance depuis un hôte distant

Utilisez cette commande pour vous connecter à l'instance postgres à partir de la machine locale :

psql 'postgres://<username>:<password>@<host>:<port>/<db>?sslmode=disable'

# like
psql 'postgres://root:[email protected]:5432/postgres?sslmode=disable'

Conclusion

Jusqu'à présent, nous avons réussi à installer Postgresql 14 sur un serveur Fedora 34, à effectuer quelques configurations de base, puis à gérer les utilisateurs de base.


Fedora
  1. Comment installer et configurer Postgres 13 Ubuntu 20.04

  2. Comment installer et configurer Postgres 13 sur Centos 8

  3. Comment installer et configurer Postgres 14 Ubuntu 20.04

  4. Comment installer et configurer Postgres 14 sur Debian 11

  5. Comment installer et configurer Mysql Server 8 sur Fedora 34/35

Comment installer et configurer Nextcloud sur Fedora 32

Comment installer PostgreSQL et phpPgAdmin sur Fedora 34

Comment installer le serveur Fedora 34

Comment installer PostgreSQL 14 dans Fedora Linux

Comment installer et configurer PostgreSQL sur Ubuntu

Comment installer PostgreSQL sur Fedora 35