Désactiver le préchargeur
Explorez, Apprenez et Maîtrisez

Documentation et Tutoriels - Hébergement Web Caramania.Ca

avec Nos Documentation et Tutoriels

Découvrez notre vaste bibliothèque de documentation et de tutoriels conçus pour vous aider à tirer le meilleur parti des services Caramania.Ca. Que vous soyez un débutant cherchant à configurer votre premier site web ou un utilisateur avancé désireux d'explorer des fonctionnalités plus complexes, nos guides pas à pas vous accompagneront à chaque étape. Simplifiez la gestion de vos services, trouvez des solutions rapides à vos problèmes, et approfondissez vos connaissances grâce à notre centre de ressources complet.

Documentation / Tutoriels Linux / Bases de données / Installer PostgreSQL sur Ubuntu, Debian et AlmaLinux
Bahanos
09/01/2025
Intermédiaire
20 minutes

Prérequis

  • Un serveur Ubuntu/Debian ou AlmaLinux 9/Rocky Linux 9
  • Accès root ou sudo

PostgreSQL est une base de données relationnelle puissante et open source, connue pour sa fiabilité et ses fonctionnalités avancées. Idéal pour les applications critiques.

1. Installer PostgreSQL

Installation depuis les dépôts officiels (Ubuntu/Debian)
# Ajouter le dépôt PostgreSQL officiel
apt install -y curl ca-certificates
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list

# Installer PostgreSQL 16
apt update
apt install -y postgresql-16 postgresql-client-16

# Vérifier
systemctl status postgresql
psql --version
Installation depuis les dépôts officiels (AlmaLinux/Rocky Linux)
# Installer le dépôt PostgreSQL officiel
dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Désactiver le module PostgreSQL par défaut
dnf -qy module disable postgresql

# Installer PostgreSQL 16
dnf install -y postgresql16-server postgresql16

# Initialiser la base de données (requis sur AlmaLinux/Rocky Linux)
/usr/pgsql-16/bin/postgresql-16-setup initdb

# Activer et démarrer
systemctl enable postgresql-16
systemctl start postgresql-16

# Vérifier
systemctl status postgresql-16
psql --version
Étape initdb sur AlmaLinux/Rocky Linux

Contrairement à Ubuntu/Debian, AlmaLinux/Rocky Linux nécessite une étape d'initialisation (initdb) avant de pouvoir démarrer PostgreSQL. Cette étape crée les fichiers de base de données initiaux.

2. Se connecter à PostgreSQL

Connexion initiale
# Se connecter en tant qu'utilisateur postgres
sudo -u postgres psql

# Ou
su - postgres
psql

3. Créer un utilisateur et une base

Commandes SQL
-- Créer un utilisateur avec mot de passe
CREATE USER mon_user WITH PASSWORD 'mot_de_passe_securise';

-- Créer une base de données
CREATE DATABASE ma_base OWNER mon_user;

-- Donner tous les privilèges
GRANT ALL PRIVILEGES ON DATABASE ma_base TO mon_user;

-- Se connecter à la base
\c ma_base

-- Donner les droits sur le schema public
GRANT ALL ON SCHEMA public TO mon_user;

-- Lister les bases
\l

-- Lister les utilisateurs
\du

-- Quitter
\q

4. Configurer l'authentification

Éditer pg_hba.conf (Ubuntu/Debian)
# Trouver le fichier
find /etc -name pg_hba.conf 2>/dev/null
# Généralement : /etc/postgresql/16/main/pg_hba.conf

nano /etc/postgresql/16/main/pg_hba.conf

# Pour permettre la connexion par mot de passe en local :
# Changer 'peer' en 'md5' ou 'scram-sha-256' pour les connexions locales
# local   all   all   md5
# host    all   all   127.0.0.1/32   scram-sha-256

# Redémarrer PostgreSQL
systemctl restart postgresql
Éditer pg_hba.conf (AlmaLinux/Rocky Linux)
# Le fichier se trouve dans le répertoire de données
nano /var/lib/pgsql/16/data/pg_hba.conf

# Changer 'ident' en 'md5' ou 'scram-sha-256' pour les connexions locales
# local   all   all   md5
# host    all   all   127.0.0.1/32   scram-sha-256

# Redémarrer PostgreSQL
systemctl restart postgresql-16

5. Autoriser les connexions distantes

Configuration pour accès distant (Ubuntu/Debian)
# Éditer postgresql.conf
nano /etc/postgresql/16/main/postgresql.conf

# Trouver et modifier :
listen_addresses = '*'

# Éditer pg_hba.conf pour autoriser les connexions distantes
nano /etc/postgresql/16/main/pg_hba.conf

# Ajouter (pour autoriser une IP spécifique) :
# host    all    all    192.168.1.0/24    scram-sha-256
# Ou pour tout le monde (dangereux) :
# host    all    all    0.0.0.0/0    scram-sha-256

# Redémarrer
systemctl restart postgresql

# Ouvrir le port
ufw allow from 192.168.1.0/24 to any port 5432
Configuration pour accès distant (AlmaLinux/Rocky Linux)
# Éditer postgresql.conf
nano /var/lib/pgsql/16/data/postgresql.conf

# Trouver et modifier :
listen_addresses = '*'

# Éditer pg_hba.conf pour autoriser les connexions distantes
nano /var/lib/pgsql/16/data/pg_hba.conf

# Ajouter (pour autoriser une IP spécifique) :
# host    all    all    192.168.1.0/24    scram-sha-256

# Redémarrer
systemctl restart postgresql-16

# Ouvrir le port
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="5432" accept'
firewall-cmd --reload

6. Commandes psql utiles

Commandes courantes
\l              -- Lister les bases de données
\c ma_base      -- Se connecter à une base
\dt             -- Lister les tables
\d ma_table     -- Structure d'une table
\du             -- Lister les utilisateurs
\dn             -- Lister les schemas
\df             -- Lister les fonctions
\q              -- Quitter
\?              -- Aide
\timing on      -- Afficher le temps d'exécution

7. Backup et Restore

Sauvegarde et restauration
# Exporter une base
pg_dump -U postgres ma_base > ma_base_backup.sql

# Exporter avec compression
pg_dump -U postgres ma_base | gzip > ma_base_backup.sql.gz

# Exporter toutes les bases
pg_dumpall -U postgres > all_databases.sql

# Restaurer une base
psql -U postgres ma_base < ma_base_backup.sql

# Restaurer depuis un fichier compressé
gunzip -c ma_base_backup.sql.gz | psql -U postgres ma_base

# Créer un backup en format custom (plus efficace)
pg_dump -U postgres -Fc ma_base > ma_base.dump
pg_restore -U postgres -d ma_base ma_base.dump

8. Script de sauvegarde automatique

Backup quotidien
cat > /opt/pg_backup.sh << 'EOF'
#!/bin/bash
BACKUP_DIR="/var/backups/postgresql"
DATE=$(date +%Y-%m-%d)
KEEP_DAYS=7

mkdir -p $BACKUP_DIR

# Backup de toutes les bases
sudo -u postgres pg_dumpall | gzip > $BACKUP_DIR/all-databases-$DATE.sql.gz

# Supprimer les vieux backups
find $BACKUP_DIR -type f -mtime +$KEEP_DAYS -delete

echo "Backup completed: $BACKUP_DIR/all-databases-$DATE.sql.gz"
EOF

chmod +x /opt/pg_backup.sh

# Ajouter au cron
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/pg_backup.sh") | crontab -

9. Optimisation des performances

Configuration pour serveur 4 Go RAM
nano /etc/postgresql/16/main/postgresql.conf

# Paramètres recommandés :
shared_buffers = 1GB
work_mem = 32MB
maintenance_work_mem = 256MB
effective_cache_size = 3GB
max_connections = 100
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100

# Redémarrer
systemctl restart postgresql
Chemin de configuration sur AlmaLinux/Rocky Linux

Sur AlmaLinux/Rocky Linux, le fichier postgresql.conf se trouve dans /var/lib/pgsql/16/data/postgresql.conf. Les paramètres de performance sont les mêmes.

10. Installer pgAdmin (interface web)

pgAdmin 4 (Ubuntu/Debian)
# Ajouter le dépôt pgAdmin
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg

echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" | tee /etc/apt/sources.list.d/pgadmin4.list

# Installer pgAdmin web
apt update
apt install -y pgadmin4-web

# Configurer
/usr/pgadmin4/bin/setup-web.sh

# Accès : http://VOTRE_IP/pgadmin4
pgAdmin 4 (AlmaLinux/Rocky Linux)
# Ajouter le dépôt pgAdmin
rpm -i https://ftp.postgresql.org/pub/pgadmin/pgadmin4/yum/pgadmin4-redhat-repo-2-1.noarch.rpm

# Installer pgAdmin web
dnf install -y pgadmin4-web

# Configurer
/usr/pgadmin4/bin/setup-web.sh

# Accès : http://VOTRE_IP/pgadmin4
PostgreSQL installé !

Votre serveur PostgreSQL est prêt. Il est particulièrement adapté pour les applications nécessitant des fonctionnalités avancées comme les transactions ACID, JSON, ou les extensions PostGIS.

💬 Écrivez-nous sur Messenger !