# Aide-Mémoire Diagnostic PostgreSQL Ce fichier regroupe les commandes essentielles pour diagnostiquer les problèmes de connexion, de droits et de performance sur PostgreSQL. ## 1. Connexion au serveur (Ligne de commande) Se connecter en tant que super-administrateur (localement) : ```bash sudo -u postgres psql ``` Tester une connexion distante (depuis une autre machine) : ```bash # -h = hôte, -U = utilisateur, -d = base de données, -W = demander le mot de passe psql -h 192.168.99.35 -U lucien -d medusa_db -W ``` ## 2. Commandes d'Inspection (dans psql `postgres=#`) ### Utilisateurs et Droits | Commande | Description | | :--- | :--- | | `\du` | Liste tous les utilisateurs et leurs rôles (Superuser, Create DB, etc.). | | `\du+` | Même chose avec plus de détails (description). | | `SELECT current_user;` | Affiche l'utilisateur avec lequel vous êtes connecté. | ### Bases de données | Commande | Description | | :--- | :--- | | `\l` | Liste toutes les bases de données et leurs propriétaires. | | `\c ma_base` | Se connecter à la base `ma_base`. | | `\dt` | Liste les tables de la base courante. | ### Configuration et Fichiers | Commande | Description | | :--- | :--- | | `SHOW config_file;` | Affiche le chemin du fichier `postgresql.conf`. | | `SHOW hba_file;` | Affiche le chemin du fichier `pg_hba.conf` (règles de connexion). | | `SHOW listen_addresses;` | Affiche les IPs écoutées (doit être `*` pour accès distant). | | `SHOW port;` | Affiche le port (défaut 5432). | | `SHOW password_encryption;` | Affiche l'algorithme de hachage (souvent `scram-sha-256` ou `md5`). | ## 3. Diagnostic des Connexions Actives Voir qui est connecté et ce qu'ils font : ```sql SELECT pid, usename, client_addr, state, query FROM pg_stat_activity WHERE state != 'idle'; ``` Voir les connexions bloquées : ```sql SELECT pid, usename, query FROM pg_stat_activity WHERE wait_event_type = 'Lock'; ``` ## 4. Gestion des Mots de Passe Si vous avez un doute sur un mot de passe ou une méthode de chiffrement (md5 vs scram), la meilleure solution est de le redéfinir : ```sql -- Réinitialiser le mot de passe ALTER USER nom_utilisateur WITH PASSWORD 'nouveau_mot_de_passe'; ``` ## 5. Problèmes Courants `pg_hba.conf` Si vous avez l'erreur `no pg_hba.conf entry for host...`, vérifiez le fichier `pg_hba.conf`. 1. Ouvrir le fichier (chemin obtenu via `SHOW hba_file;`). 2. Vérifier la présence d'une ligne comme : ```text # TYPE DATABASE USER ADDRESS METHOD host all all 0.0.0.0/0 scram-sha-256 ``` 3. **IMPORTANT** : Après toute modification, recharger la config : ```bash sudo systemctl reload postgresql ```