Pg_config est pour les informations de compilation, pour aider les extensions et les programmes clients à compiler et à lier contre PostgreSQL. Il ne sait rien de l'instance ou des instances PostgreSQL actives sur la machine, seulement les binaires.
pg_hba.conf peut apparaître à de nombreux autres endroits selon la façon dont Pg a été installé. L'emplacement standard est pg_hba.conf dans le répertoire data_directory de la base de données (qui pourrait être dans /home, /var/lib/pgsql, /var/lib/postgresql/[version]/, /opt/postgres/, etc etc etc) mais les utilisateurs et les empaqueteurs peuvent le mettre où ils veulent. Malheureusement.
Les seuls moyens valables de trouver pg_hba.conf est de demander à une instance PostgreSQL en cours d'exécution où se trouve son pg_hba.conf, ou de demander au sysadmin où il se trouve. Vous ne pouvez même pas compter sur le fait de demander où se trouve le datadir et d'analyser postgresql.conf parce qu'un init script pourrait passer un paramètre comme -c hba_file=/some/other/path lors du démarrage de Pg.
Ce que vous voulez faire, c'est demander à PostgreSQL :
SHOW hba_file;
Cette commande doit être exécutée sur une session super-utilisateur, donc pour un script shell vous pourriez écrire quelque chose comme :
psql -t -P format=unaligned -c 'show hba_file';
et définissez les variables d'environnement PGUSER, PGDATABASE, etc. pour vous assurer que la connexion est correcte.
Oui, c'est un peu le problème de la poule et de l'œuf, dans la mesure où si l'utilisateur ne peut pas se connecter (disons, après avoir fait une erreur en éditant pg_hba.conf), vous ne pouvez pas trouver pg_hba.conf pour le corriger.
Une autre option est de regarder la sortie de la commande ps et de voir si l'argument -D du répertoire de données du postmaster y est visible, par ex.
ps aux | grep 'postgres *-D'
puisque pg_hba.conf se trouvera dans le répertoire des données (sauf si vous êtes sous Debian/Ubuntu ou un dérivé et que vous utilisez leurs paquets).
Si vous ciblez spécifiquement les systèmes Ubuntu avec PostgreSQL installé à partir de paquets Debian/Ubuntu, cela devient un peu plus facile. Vous n'avez pas à vous occuper de Pg compilé à la main à partir des sources et pour lequel quelqu'un a créé un datadir dans son répertoire personnel, ou d'une installation de Pg EnterpriseDB dans /opt, etc. Vous pouvez demander à pg_wrapper, le gestionnaire Pg multi-version de Debian/Ubuntu, où se trouve PostgreSQL en utilisant la commande pg_lsclusters de pg_wrapper.
Si vous ne pouvez pas vous connecter (Pg ne fonctionne pas ou vous devez modifier pg_hba.conf pour vous connecter), vous devrez rechercher les fichiers pg_hba.conf sur le système. Sur Mac et Linux, quelque chose comme sudo find / -type f -name pg_hba.conf fera l'affaire. Vérifiez ensuite le fichier PG_VERSION dans le même répertoire pour vous assurer qu'il s'agit de la bonne version de PostgreSQL si vous en avez plusieurs. (Si pg_hba.conf est dans /etc/, ignorez ceci, c'est le nom du répertoire parent à la place). Si vous avez plus d'un répertoire de données pour la même version de PostgreSQL, vous devrez regarder la taille de la base de données, vérifier la ligne de commande du postgres en cours d'exécution à partir de ps pour voir si l'argument -D du répertoire de données correspond à celui que vous éditez, etc. https://askubuntu.com/questions/256534/how-do-i-find-the-path-to-pg-hba-conf-from-the-shell/256711
1 votes
1) : Assurez-vous que vous avez créé un utilisateur nommé "postgres" et que vous avez les droits sur votre base de données. 2) : Assurez-vous qu'il a un mot de passe 3) : Assurez-vous que votre config/database.yml contient les informations d'identification des droits (nom d'utilisateur + mot de passe).
2 votes
Il faut que chaque endroit soit pair et que l'indentation soit réglée sur md5
18 votes
Voir également cette réponse - la connexion peut échouer sur
localhost
mais réussissent sur127.0.0.1
.10 votes
Dans mon cas, j'ai dû ajouter
host: localhost
en eldatabase.yml
fichier.0 votes
Ce lien m'a aidé suite.opengeo.org/docs/latest/dataadmin/pgGettingStarted/
0 votes
J'ai corrigé cette erreur en ajoutant
--host=localhost
que j'ai supposé être la valeur par défaut0 votes
Référez-vous à ceci pour
postgres
erreur d'authentification Lien