Vous n'êtes pas identifié(e).
Pages : 1
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
Et le postgresql.conf dans /var/www est bien utilisé ? Le wrapper debian surcharge peut être des paramètre en ligne de commande
Julien.
https://rjuju.github.io/
Hors ligne
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
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 ?
Julien.
https://rjuju.github.io/
Hors ligne
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
É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 ?
Julien.
https://rjuju.github.io/
Hors ligne
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
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 ?
Julien.
https://rjuju.github.io/
Hors ligne
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
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.
Julien.
https://rjuju.github.io/
Hors ligne
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
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
Julien.
https://rjuju.github.io/
Hors ligne
Merci.
En effet je ne l'avais pas compris comme cela.
Ps : y a un tag "résolu" qq part ?
Hors ligne
Il n'y a pas de tag "résolu". Certaines personnes ajoutent l'information dans le titre du thread pour cela.
Julien.
https://rjuju.github.io/
Hors ligne
Pages : 1