PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 25/09/2016 11:13:57

Deun
Membre

[Résolu] Configuration de include_dir

Bonjour,

J'ai un système basé sur Ubuntu, qui me met les fichier de configuration postgresql, pg_hba, pg_ident dans /etc/postgres/9.5/main (ma version de postgres est 9.5 mais avec une 9.3 le problème que je vais écrire est entier.

Si dans /etc/postgres/9.5/main/postgresql.conf je mets include_dir='/var/www/bdd/postgres/conf' et que dans /var/www/bdd/postgres/conf je mets un pg_hba.conf , j'obtient une erreur de syntax et le serveur refuse démarrer.

Les droits sur les répertoires sont :

drwxr-xr-x   1 root  root   130 mars  10  2016 var
drwxr-xr-x 6 deun root       73 sept. 25 10:35 www
drwxrwxr-x 3 postgres denis 4096 sept. 24 22:17 bdd
drwx------ 6 postgres postgres    47 sept. 24 10:49 postgres
drwxrwxr-x  2 deun    postgres    6 sept. 24 13:18 conf

Si je change le répertoire avec postgres comme propriétaire et 0700 en droits d'accès ça ne change rien.

Comment faire pour délocaliser les fichiers de config et idéalement les mettre dans un répertoire qui appartienne à deun avec des droits pour deun ?

Dernière modification par Deun (05/11/2016 21:49:29)

Hors ligne

#2 25/09/2016 13:45:42

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Bonjour,

La directive include_dir ne permet de surcharger que les paramètres présents dans le postgresql.conf.  Ce que vous cherchez est le paramètre hba_file, mais si vous cherchez à lancer postgres avec un utilisateur spécifique et de faire totalement autre chose que ce que propose debian, je vous conseille de ne pas utiliser les wrapper debian pour cela vous gagnerez beaucoup de temps.

Hors ligne

#3 25/09/2016 14:38:28

Deun
Membre

Re : [Résolu] Configuration de include_dir

Merci.
Ha, ok pour la surcharge, dasn la doc il est écris que cela permet de prendre en compte tout fichier de config, j'ai donc pensé que tous les fichiers de config seraient pris en compte sans soucis.
Ceci dit si dans le postgresql.conf de /var/www/.../conf je mets hba_file sur /var/www/..../confpg_hba-conf ça ne marche pas non plus.

Hors ligne

#4 25/09/2016 18:08:25

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Et le postgresql.conf dans /var/www est bien utilisé ? Le wrapper debian surcharge peut être des paramètre en ligne de commande

Hors ligne

#5 04/10/2016 11:18:44

Deun
Membre

Re : [Résolu] Configuration de include_dir

Oui oui il est bien utilisé.
En fait après différents tests je me vois que le pg_hba.conf ne fonctionne QUE s'il est dans le répertoire du serveur (dans mon cas /var/www/bdd/postgres/9.5/ ou dans le répertoire du système (/etc/postgres/version/). C'est gênant pour la facilité de gestion des configurations je trouve.

Ce serait bien de modifier la documentation et de le préciser non ?

PS : je fais comment pour clore le sujet ?

Dernière modification par Deun (04/10/2016 11:19:50)

Hors ligne

#6 04/10/2016 13:14:01

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Le paramètre hba_file devrait fonctionner. Quelle est l'erreur remontée par postgres ? Est-ce que l'utilisateur qui lance l'instance peut lire ce fichier ?

Hors ligne

#7 04/10/2016 14:46:24

Deun
Membre

Re : [Résolu] Configuration de include_dir

Il me semble mais bon...
Alors je le lance avec postgres comme utilisateur, et le groupe postgres à les rwx sur le répertoire /conf (voir mon premier message).
L'erreur est "une erreur de syntax" pour chacune des lignes de pg_hba.conf qui mentionne un accès. Hors il n'y a pas d'erreur de syntaxe puisque le même fichier fonctionne parfaitement dans le répertoire des données.

Hors ligne

#8 04/10/2016 15:18:18

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Étonnant, si j'insère des lignes en erreur dans mon fichier pg_hba.conf, j'ai l'erreur suivante :

LOG:  invalid connection type "haost"
CONTEXT:  line 88 of configuration file ...
FATAL:  could not load pg_hba.conf

J'ai par contre une erreur de syntaxe si rajoute une erreur dans la configuration paramètre du conf_file dans le postgresql.conf.

Du coup, quel est le message d'erreur complet, quel est le contenu du fichier pg_hba.conf et comment modifiez vous le paramètre hba_file ?

Hors ligne

#9 04/10/2016 16:27:41

Deun
Membre

Re : [Résolu] Configuration de include_dir

Pour la modif je le fais soit à la main avec un éditeur geamy ou nano dans la console, soit avec pgadmin.

le fichier /etc/postgresql/9.5/main/postgresql.conf

#------------------------------------------------------------------------------
# FILE LOCATIONS
#------------------------------------------------------------------------------

# The default values of these variables are driven from the -D command-line
# option or PGDATA environment variable, represented here as ConfigDir.

data_directory = '/var/lib/postgresql/9.5/main'         # use data in another directory
                                        # (change requires restart)
hba_file = '/etc/postgresql/9.5/main/pg_hba.conf'       # host-based authentication file
                                        # (change requires restart)
ident_file = '/etc/postgresql/9.5/main/pg_ident.conf'   # ident configuration file
                                        # (change requires restart)

# If external_pid_file is not explicitly set, no extra PID file is written.
external_pid_file = '/var/run/postgresql/9.5-main.pid'                  # write an extra PID file

.../...

include_dir = '/var/www/bdd/postgres/conf'

Maintenant /var/www/bdd/postgres/conf/postgresql.conf qui fonctionne avec le même pg_hba.conf ci-dessous contient :

hba_file = '/var/www/bdd/postgres/9.5/pg_hba.conf' 

Il ne précise donc pas un répertoire de données particulier.... ce qui suppose que les données sont dans /var/lib/postgresql/9.5/main , et donc pas là où il y a le pg_hba.conf qui fonctionne...

Et le pg_hba.conf qui fonctionne, /var/www/bdd/postgres/9.5/pg_hba.conf contient :

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

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local    all     all     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
host     all     all     109.190.174.178/32      md5

La dernière ligne que j'ai mise est censée me permettre d'accéder au serveur depuis l'extérieur (c'est l'adresse de mon modem, sur lequel j'ai configurer une redirection de port mais ça ne marche pas - c'est un autre problème).

Quand je mets ce fichier dans /var/www/bdd/postgres/conf/ j'obtient les erreurs suivantes :

The PostgreSQL server failed to start. Please check the log output:                                                                                               
LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 85, near token "postgres"                                                                
LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 90, near token "all"                                                                     
LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 92, near token "all"                                                                     
LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 94, near token "all"                                                                     
LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 100, near token "all"                                                                    
FATAL:  configuration file "/etc/postgresql/9.5/main/postgresql.conf" contains errors  

Dernière modification par Deun (04/10/2016 16:54:00)

Hors ligne

#10 04/10/2016 16:42:42

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

LOG:  syntax error in file "/var/www/bdd/postgres/conf/pg_hba.conf" line 100, near token "all"                                                                   
FATAL:  configuration file "/etc/postgresql/9.5/main/postgresql.conf" contains errors

On dirait que votre fichier pg_hba.conf est inclus avec la liste des paramètres et non comme dès règles pour la connexions. Vous avez bien utilisé hba_file ? Ce fichier pg_hba.conf ne serait pas présent dans le répertoire pointé par include_dir, ou pointé directement par include ou include_if_exists ?

Hors ligne

#11 04/10/2016 16:59:22

Deun
Membre

Re : [Résolu] Configuration de include_dir

Pardon j'ai voulu clarifier l'ensemble et ai repris mon précédent post...
Non c'est tel que je l'ai écris là et c'est bien le paramètre hba_file que je positionne le reste est commenté. Par contre oui ça ne fonctionne pas quand il est dans le répertoire pointé par include_dir mais il est dit que le répertoire de include_dir

# include files ending in '.conf'

donc aussi le pg_hba.conf

Hors ligne

#12 04/10/2016 17:27:37

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Oui, car un fichier pg_hba.conf ne peut pas être inclus dans un fichier postgresql.conf. Dans mon premier message, je parlais d'utiliser la directive hba_file pour ce fichier afin qu'il ne soit pas inclus dans le postgresql.conf.

Hors ligne

#13 28/10/2016 07:23:49

Deun
Membre

Re : [Résolu] Configuration de include_dir

Désolé, j'ai dû laisser cette question de côté un moment, mais j'y reviens donc parce que je ne comprend pas...

Dans le fichier postgresql.conf il y a bien le paramètre "hba_file =" que l'on peu renseigner et faire pointer sur n'importe quel fichier de n'importe quel répertoire.
Après je ne sais pas ce que vous voulez dire par 

car un fichier pg_hba.conf ne peut pas être inclus dans un fichier postgresql.conf.

Mais mon pg_hba n'est pas inclus dedans, c'est un fichier à part, mais qui se trouve dans le même répertoire le postgresql.conf personnalisé. Lequel répertoire fait l'objet de la valeur attribuée à include_dir dans le postgresql.conf qui est dans /etc/postgres
Il n'y a donc pas de pg_hba inclus dans aucun des postgresql.conf
Il y a juste un répertoire qui regroupe tout les fichiers de config perso : postgresql.conf ; pg_hba.conf ; pg_ident.conf comme stipulé dans la remarque '# include files ending in '.conf'' qui explique à quoi sert include_dir.

Hors ligne

#14 28/10/2016 07:47:44

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Mais mon pg_hba n'est pas inclus dedans, c'est un fichier à part, mais qui se trouve dans le même répertoire le postgresql.conf personnalisé. Lequel répertoire fait l'objet de la valeur attribuée à include_dir dans le postgresql.conf qui est dans /etc/postgres
Il n'y a donc pas de pg_hba inclus dans aucun des postgresql.conf

Ce qui fait qu'il est bien inclus dedans, d'où votre erreur.


Pour être plus clair, si vous demandez d'inclure tous les fichiers *.conf d'un répertoire et que ce répertoire contient un fichier pg_hba.conf, ou n'importe quel autre fichier avec une extension .conf qui ne correspond pas à ce qu'on peut configurer dans un fichier postgresql.conf cela ne marchera pas.


Si vous tenez vraiment à mettre la totalité des fichiers de configuration au même endroit, utilisez des sous répertoire dédiés pour ne pas inclure des fichiers pg_hba ou autre dans le fichier postgresql.conf.

Hors ligne

#15 29/10/2016 07:18:49

Deun
Membre

Re : [Résolu] Configuration de include_dir

Haaaa ok! Ben du coup je ne trouve pas ça clair :
D'un côté il est dit que l'on peut mettre n'inporte quoi en .conf dans le répertoire mais en fait c'est n'importe quoi en .conf qui concerne uniquement les commandes que peut comporter un postgresql.conf
Merci.

Hors ligne

#16 29/10/2016 16:35:46

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Non, il est dit que tous les fichiers nommés *.conf seront intégrés, pas que vous pouvez mettre tout et n'importe quoi dedans.  Le include_dir étant un paramètre du postgresql.conf, il est normal que s'attendre à ce que seul des paramètres du postgresql.conf soient autorisés. La documentation parle bien de ce paramètre pour éviter d'avoir un seul gros fichier par exemple, pas pour y inclure un pg_hba ou autre chose : http://docs.postgresql.fr/9.6/runtime-config.html

Hors ligne

#17 05/11/2016 21:34:20

Deun
Membre

Re : [Résolu] Configuration de include_dir

Merci.
En effet je ne l'avais pas compris comme cela.

Ps : y a un tag "résolu" qq part ?

Hors ligne

#18 05/11/2016 21:41:42

rjuju
Administrateur

Re : [Résolu] Configuration de include_dir

Il n'y a pas de tag "résolu".  Certaines personnes ajoutent l'information dans le titre du thread pour cela.

Hors ligne

Pied de page des forums