PostgreSQL - Installation sous la famille RedHat
Mis à jour le 28/09/2023

Installation

Remarque: Ici, Le serveur est installé en français

choix de la version (ici 13 car dans la liste)

dnf module list postgresql
dnf module switch-to postgresql:13
yum install postgresql-server
sudo dnf install -y postgresql-contrib # ajoute (entre autres) des extensions telles que pg_buffercache
systemctl status postgresql.service 
● postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Il faut initialiser une instance

le répertoire /var/lib/pgsql/ est crée par l’install yum, il contient data & backups, tout cela appartient au user postgres

sudo -u postgres pg_ctl init -D /var/lib/pgsql/data

Résultat:

Les fichiers de ce cluster appartiendront à l'utilisateur « postgres ».
Le processus serveur doit également lui appartenir.

L'instance sera initialisée avec la locale « fr_FR.UTF-8 ».
L'encodage par défaut des bases de données a été configuré en conséquence
avec « UTF8 ».
La configuration de la recherche plein texte a été initialisée à « french ».

Les sommes de contrôles des pages de données sont désactivées.

correction des droits sur le répertoire existant /var/lib/pgsql/data... ok
création des sous-répertoires... ok
sélection de la valeur par défaut pour max_connections... 100
sélection de la valeur par défaut pour shared_buffers... 128MB
sélection du fuseau horaire par défaut... Europe/Paris
sélection de l'implémentation de la mémoire partagée dynamique...posix
création des fichiers de configuration... ok
lancement du script bootstrap...ok
exécution de l'initialisation après bootstrap...ok
synchronisation des données sur disqueok

ATTENTION : active l'authentification « trust » pour les connexions
locales.
Vous pouvez changer cette configuration en éditant le fichier pg_hba.conf
ou en utilisant l'option -A, ou --auth-local et --auth-host au prochain
lancement d'initdb.

Succès. Vous pouvez maintenant lancer le serveur de bases de données en utilisant :

    /usr/bin/pg_ctl -D /var/lib/pgsql/data -l fichier_de_trace start

Donc, démarrage avec:

sudo -u postgres /usr/bin/pg_ctl -D /var/lib/pgsql/data -l /var/lib/pgsql/pgsql.log start

Résultat:

could not change directory to "/home/bruno": Permission non accordée
waiting for server to start.... done
server started

Remarque:
-l est facultatif et n’est pas géré par défaut par systemd.
Il y les mêmes logs dans /var/lib/pgsql/data/log

Démarrage au boot

sudo systemctl enable postgresql.service

Etat de l’instance principale

systemctl status postgresql.service

Création d’autres instances

via initdb pas d’intégration automatique à systemd, je suggère de copier le fichier /usr/lib/systemd/system/postgresql.service, modifier Environment=PGDATA=...
Lorsqu’on démarre selinux bloque le nouveau port (ce qui n’arrive pas avec pg_ctl, à mon avis, grâce au contexte de cet exécutable), donc si le port est 5434:

semanage port -a -t postgresql_port_t -p tcp 5434

results matching ""

    No results matching ""