web-dev-qa-db-fra.com

Postgres semble ignorer le paramètre listen_addresses

J'essaie de DÉSACTIVER l'accès client distant sur ma base de données Postgres 9.5.7 (exécutant Ubuntu 16.04).

J'ai fait ce que je pensais être les changements corrects (voir ci-dessous) en vain. Je peux penser à deux raisons pour lesquelles mes modifications ne fonctionneraient pas:

  • J'édite le mauvais fichier
  • Je ne redémarre pas le service correctement

Je pensais les exclure, mais les clients distants peuvent toujours parler. Alors qu'est-ce qui me manque?

En fait, ce que j'essaie de faire, c'est d'annuler mes modifications qui ont permis l'accès client à distance pour que je puisse capturer ces modifications et les réappliquer avec notre pile de sel. Avant de commencer à exécuter des tests de déploiement via Salt, je veux savoir que l'accès à distance est désactivé afin de pouvoir être sûr que ma pile Salt effectue les modifications.

Certaines données

Je démarre postgres en utilisant le même fichier de configuration que je modifie (ps sortie reformatée pour plus de lisibilité)

postgres@testweb:~$ ps -eaf | grep bin/post
postgres [snip] /usr/lib/postgresql/9.5/bin/postgres 
                -D /var/lib/postgresql/9.5/main 
                -c config_file=/etc/postgresql/9.5/main/postgresql.conf

postgres est configuré pour écouter uniquement sur le port localhost (c'était "*" plus tôt)

postgres@testweb:~$ grep listen_addresses /etc/postgresql/9.5/main/postgresql.conf
listen_addresses = 'localhost'      # what IP address(es) to listen on;

L'authentification basée sur l'hôte est définie sur localhost. Cela ne devrait pas avoir d'importance si je désactive l'accès, n'est-ce pas? Ma compréhension est que si listen_addresses='localhost' Alors l'accès client à distance ne fonctionnera pas.

postgres@testweb:~$ grep ^Host /etc/postgresql/9.5/main/pg_hba.conf
Host    all             all             127.0.0.1/32            md5
Host    all             all             ::1/128                 md5

J'édite les fichiers de configuration corrects, mais listen_addresses prétend *

postgres@testweb:~$ sql
psql (9.5.7)
Type "help" for help.

postgres=# show config_file;
           config_file
------------------------------------------
/etc/postgresql/9.5/main/postgresql.conf
(1 row)

postgres=# show hba_file;
               hba_file
--------------------------------------
/etc/postgresql/9.5/main/pg_hba.conf
(1 row)

postgres=# show listen_addresses;
 listen_addresses
------------------
*

Preuve au niveau du système d'exploitation que nous écoutons toujours sur TOUTES les interfaces (c'est-à-dire que la commande show list_addresses; Est en vigueur.

postgres@testweb:~$ netstat -nlt | grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN
tcp6       0      0 :::5432                 :::*                    LISTEN

J'ai un fichier de conf personnalisé dans conf.d, Mais je ne sais pas s'il est lu, car je ne l'ai pas touché afin de permettre l'accès client à distance. Quoi qu'il en soit, il est réglé sur ce que je veux pour l'instant

postgres@testweb:~$ cat /etc/postgresql/9.5/main/conf.d/custom.conf
listen_addresses = 'localhost'
shared_buffers = 4011MB
work_mem = 320MB
maintenance_work_mem = 1018MB
effective_cache_size = 8022MB
shared_preload_libraries = 'pg_stat_statements'

Aucun fichier de configuration errant n'apparaît sur le serveur

postgres@testweb:~$ locate postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf.bak
/usr/lib/tmpfiles.d/postgresql.conf
/usr/share/postgresql/9.5/postgresql.conf.sample

postgres@testweb:~$ locate pg_hba.conf
/etc/postgresql/9.5/main/pg_hba.conf
/usr/share/postgresql/9.5/pg_hba.conf.sample

Je redémarre l'instance de postgres avec service postgresql restart (J'ai même essayé de redémarrer le serveur (ugh) juste pour m'assurer. Toujours pas de chance. J'ai vérifié que si j'exécute service postgresql stop Que ma télécommande les clients échouent.

De toute évidence, en essayant de permettre l'accès à distance au client, j'ai dû modifier quelque chose d'autre; mais pour la vie de moi, je ne peux pas penser à ce que c'était. J'ai annulé les modifications que je me souviens avoir apportées (dans les deux fichiers conf). J'ai dû manquer quelque chose ... mais quoi?

MODIFICATION (s)

par un commentaire, si je me connecte en spécifiant l'hôte, je vois le même résultat (AFAIK, je n'ai jamais défini le mot de passe utilisateur postgres, donc j'y accède en tant que root).

root@testweb:~# Sudo -u postgres -h localhost psql
psql (9.5.7)
Type "help" for help.

postgres=# show listen_addresses;
 listen_addresses
------------------
 *
(1 row)

postgres=# show config_file;
               config_file
------------------------------------------
 /etc/postgresql/9.5/main/postgresql.conf
(1 row)

Selon un autre commentaire, voici la sortie après avoir exécuté service postgresql restart ... semble propre (incertain de la dernière ligne ... recherche (merci Daniel) indique que c'est "sans conséquence")

2017-07-18 17:43:16.440 MDT [4911] LOG:  database system was shut down at 2017-07-18 17:43:15 MDT
2017-07-18 17:43:16.444 MDT [4911] LOG:  MultiXact member wraparound protections are now enabled
2017-07-18 17:43:16.447 MDT [4910] LOG:  database system is ready to accept connections
2017-07-18 17:43:16.447 MDT [4915] LOG:  autovacuum launcher started
2017-07-18 17:43:16.848 MDT [4917] [unknown]@[unknown] LOG:  incomplete startup packet
8
stv

Regarde le postgresql.auto.conf fichier dans votre $ PGDATA.

Si quelqu'un utilise le ALTER SYSTEM commande pour modifier les paramètres, vous y trouverez la valeur.

postgresql.auto.conf est lu après postgresql.confet chaque paramètre placé dans ce fichier écrase ceux de postgresql.conf...

Ça vaut le coup d'oeil ...

8
Arkhena