Retour aux environnements

Installer PostgreSQL sous Linux

Le serveur de bases de données du cours, prêt en dix minutes sur Debian ou Ubuntu

Ce qu'on va faire

Installer le serveur PostgreSQL, le démarrer, lui donner le mot de passe du cours, créer la base confiserie avec sa table chocolat, puis vérifier qu'un programme Java peut s'y connecter. Toutes les commandes se tapent dans un terminal.

Convention du cours : usager postgres, mot de passe testtest. C'est un mot de passe d'apprentissage pour votre machine locale, jamais pour un vrai serveur !

Étape par étape

  1. Installer les paquets : sur Debian, Ubuntu ou Linux Mint :
    sudo apt update
    sudo apt install postgresql postgresql-client postgresql-contrib
    Le paquet postgresql-contrib apporte les extensions officielles (pgcrypto, uuid-ossp, hstore...) : pas obligatoire aujourd'hui, mais il servira plus tard dans la session. Sur Fedora : sudo dnf install postgresql-server puis sudo postgresql-setup --initdb. Sur Arch : sudo pacman -S postgresql.
  2. Démarrer le service et l'activer au démarrage de la machine :
    sudo systemctl enable --now postgresql
    systemctl status postgresql
    Le statut doit afficher active.
  3. Donner le mot de passe du cours à l'usager postgres :
    sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'testtest';"
  4. Créer la base confiserie et sa table chocolat :
    sudo -u postgres createdb confiserie
    sudo -u postgres psql -d confiserie
    Puis dans la console psql :
    CREATE TABLE chocolat (
        id SERIAL PRIMARY KEY,
        nom VARCHAR(100) NOT NULL,
        description TEXT,
        cacao REAL,
        essence VARCHAR(100)
    );
    
    INSERT INTO chocolat (nom, description, cacao, essence) VALUES
        ('Noir intense', 'Une tablette corsée', 85, 'nature'),
        ('Lait onctueux', 'Le classique doux', 40, 'vanille');
    On sort de psql avec \q.
  5. Vérifier en console : se connecter comme le fera Java, par le réseau local :
    psql -h localhost -U postgres -d confiserie
    confiserie=# SELECT nom, cacao FROM chocolat;
    Le mot de passe demandé est testtest. Si les chocolats s'affichent, le serveur est prêt.
  6. Brancher Java : dans le projet (avec le pilote JDBC au chemin de compilation), l'URI de connexion est :
    jdbc:postgresql://localhost:5432/confiserie
    C'est exactement ce qu'utilise le ChocolatDAO.java de la semaine 1.

La voie rapide : le script du cours

Toutes les étapes ci-dessus en une commande, sans danger (il ne détruit jamais de données et peut se relancer) :

chmod +x installer-postgresql-cours.sh
sudo ./installer-postgresql-cours.sh
Télécharger installer-postgresql-cours.sh
Lisez le script avant de le lancer : comprendre ce qu'un script fait avec sudo avant de l'exécuter, c'est un réflexe de pro.

pgAdmin 4 : l'interface graphique

pgAdmin est le tableau de bord graphique de PostgreSQL : parcourir les tables, lancer des requêtes, inspecter les schémas. Il s'installe depuis son propre dépôt apt :

# Installer la clé publique du dépôt pgAdmin
curl -fsS https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /etc/apt/keyrings/packages-pgadmin-org.gpg

# Déclarer le dépôt puis rafraîchir apt
sudo sh -c 'echo "deb [signed-by=/etc/apt/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

# Installer l'application de bureau
sudo apt install pgadmin4-desktop

Au premier lancement, ajoutez un serveur avec l'hôte localhost, l'usager postgres et le mot de passe testtest : la base confiserie apparaît dans l'arborescence.

Il existe aussi pgadmin4-web (interface dans le navigateur, à configurer ensuite avec sudo /usr/pgadmin4/bin/setup-web.sh) et pgadmin4 qui installe les deux modes. Les détails sont sur la page officielle pgAdmin 4 (APT).

Dépannage

Connection refused : le serveur n'écoute pas là où vous frappez. Vérifiez que le service tourne (systemctl status postgresql), puis trouvez le port réel :
sudo -u postgres psql -c "SHOW port;"
Le port par défaut est 5432, mais une machine qui a connu plusieurs installations peut écouter sur 5433 ou plus. Ce n'est pas grave : ajustez le port dans votre URI JDBC. Savoir trouver son port et corriger son URI, c'est déjà de l'administration de bases de données.
password authentication failed : le mot de passe n'est pas (encore) testtest. Refaites l'étape 3, puis reconnectez-vous.
Peer authentication failed : vous vous connectez sans -h localhost. En local, PostgreSQL authentifie par l'usager du système; passez par le réseau avec psql -h localhost -U postgres, comme Java le fait.
La base existe déjà : createdb refuse ? Tant mieux, elle est là. On ne détruit jamais une base par réflexe : on la garde et on travaille avec.

Ressources

Script d'installation du cours Semaine 1 : premier contact JDBC Pilote JDBC PostgreSQL 42.7.1 Documentation officielle PostgreSQL Discord du cours (entraide)