PostgreSQL install
| Fiche express | |
|---|---|
| Distribution | RHEL / CentOS |
| Paquets | postgresql postgresql-server postgresql-contrib
|
| Init instance | service postgresql initdb
|
| Config | $PGDATA/postgresql.conf, $PGDATA/pg_hba.conf
|
| Voir aussi | PostgreSQL · PostgreSQL debian · Psql |
Installation et configuration de base d'une instance PostgreSQL sur RHEL/CentOS (paquets système, initialisation, accès réseau et ACL), suivi de quelques tâches d'exploitation courantes une fois l'instance en service.
Installation
Selon la version de la distribution, soit via le groupe de paquets, soit paquet par paquet :
# Installation via groupe de paquets (CentOS 5/6)
yum groupinstall "PostgreSQL Database"
# Ou paquet par paquet
yum install postgresql postgresql-server postgresql-contrib postgresql-docs
L'installation crée un compte système dédié postgres (jamais de connexion directe
par mot de passe root/sudo pour l'exploitation courante — on bascule avec su - postgres).
Initialisation de l'instance
service postgresql initdb
chkconfig postgresql on
# Distributions récentes (systemd)
systemctl enable --now postgresql
Configuration réseau et authentification
Deux fichiers, dans le répertoire de données de l'instance (souvent /var/lib/pgsql/data/
ou /var/lib/pgsql/<version>/data/ selon la version) :
# postgresql.conf
listen_addresses = '*'
port = 5432
password_encryption = on
# pg_hba.conf — TYPE DATABASE USER CIDR-ADDRESS METHOD
# connexions locales (socket Unix)
local all all peer
# IPv4, exemple
host all all 127.0.0.1/32 trust
host all all 192.168.1.0/24 md5
host all all 10.20.4.0/24 md5
trust n'exige aucune authentification (à réserver aux tests locaux/labo) ; peer
vérifie que l'utilisateur OS correspond au rôle PostgreSQL ; md5 (ou scram-sha-256
sur les versions récentes, plus robuste) exige un mot de passe — c'est la méthode à privilégier
dès qu'on ouvre l'accès réseau.
Après modification :
service postgresql restart
# ou, pour ne recharger que pg_hba.conf sans couper les connexions en cours :
su - postgres -c "pg_ctl reload"
Vérification de la connexion
psql -h 127.0.0.1 -U postgres --password
Erreur fréquente si le fichier pg_hba.conf n'autorise que peer/trust
en local et qu'on se connecte via -h (donc en TCP) :
psql: FATAL: Ident authentication failed for user "postgres"
→ ajouter une ligne host avec méthode md5 pour l'adresse utilisée, puis
recharger la configuration.
Premier test
su - postgres
createdb test
psql test
CREATE ROLE testuser WITH SUPERUSER LOGIN PASSWORD 'mot_de_passe';
Pour la suite (création de rôles/bases au quotidien, méta-commandes), voir Psql.
Tablespaces
Un tablespace associe un nom logique à un emplacement disque, utile pour répartir les données sur plusieurs volumes/FS :
CREATE TABLESPACE tablespace_name
OWNER user_name
LOCATION '/chemin/vers/repertoire';
Exploitation
Localiser la configuration et les logs en cours
Une fois connecté, l'instance elle-même sait où se trouvent ses fichiers actifs — plus fiable que de deviner le chemin :
SHOW log_destination;
SHOW syslog_facility;
SHOW syslog_ident;
SHOW logging_collector;
SHOW data_directory;
SHOW log_directory;
SHOW log_filename;
locate pg_log
Démarrage / arrêt manuel
En dehors du service système, utile en dépannage ou pour une instance non enregistrée comme service :
/usr/pgsql-9.4/bin/pg_ctl -D /var/lib/pgsql/9.4/data -l logfile start
/usr/pgsql-9.4/bin/pg_ctl -D /var/lib/pgsql/9.4/data -l logfile stop
(chemins d'exemple pour une installation multi-version via les paquets postgresql<X.Y>-server
du dépôt PGDG — à adapter à la version réellement installée.)
Désactiver IPv6 (si nécessaire)
vi /etc/sysctl.conf
# net.ipv6.conf.all.disable_ipv6 = 1
sysctl -p
(à vérifier selon le contexte) : ce réglage désactive IPv6 pour tout le système, pas
seulement pour PostgreSQL — à n'appliquer que si c'est vraiment l'intention (ex. éviter que
listen_addresses = '*' n'ouvre aussi une écoute en IPv6 non souhaitée) ; sinon,
restreindre plutôt listen_addresses ou le pare-feu.
Voir aussi
- PostgreSQL — panorama général
- PostgreSQL debian — administration avancée (Debian, pgbouncer, multi-instances)
- Psql — client CLI, création de bases/rôles, méta-commandes
- Pg dump — sauvegarde et restauration