Skip to main content

Accès PostgreSQL

Accès PostgreSQL depuis le réseau local (LAN)

1. Vérifier l’adresse IP du serveur

ip a

Exemple :

wlan0: inet 192.168.1.240/24

2. Configuration de postgresql.conf

Éditer :

sudo nano /etc/postgresql/XX/main/postgresql.conf

Remplacer :

#listen_addresses = 'localhost'

par :

listen_addresses = '127.0.0.1,192.168.1.240'

Cela limite PostgreSQL à :

  • localhost
  • l’interface réseau locale (wlan0​ dans cet exemple)

3. Configuration de pg_hba.conf

Éditer :

sudo nano /etc/postgresql/XX/main/pg_hba.conf

Configuration finale :

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

# IPv6 local connections:
host    all             all             ::1/128                 trust

# Réseau local LAN
host    all             all             192.168.1.0/24          scram-sha-256

4. Redémarrer PostgreSQL

sudo systemctl restart postgresql

5. Créer un superuser PostgreSQL

sudo -u postgres createuser -P -s monuser

Options :

  • -P​ → demande le mot de passe
  • -s​ → superuser PostgreSQL

6. Si le rôle existe déjà

Ouvrir PostgreSQL :

sudo -u postgres psql

Définir le mot de passe et les droits :

ALTER ROLE monuser WITH PASSWORD 'MotDePasse';
ALTER ROLE monuser WITH SUPERUSER;

Quitter :

\q

7. Vérification écoute réseau

ss -ltnp | grep 5432

Résultat attendu :

LISTEN 0 244 192.168.1.240:5432

8. Vérifier le firewall (optionnel)

sudo ufw allow from 192.168.1.0/24 to any port 5432 proto tcp

9. Test de connexion depuis un autre poste

psql -h 192.168.1.240 -U monuser postgres

Paramètres client :

  • Host : 192.168.1.240
  • Port : 5432
  • User : monuser
  • Password : mot de passe défini précédemment