Impossible de se connecter à phpPgAdmin

10

J'essaie de configurer phpPgAdmin sur ma machine de test afin de pouvoir interfacer avec PostgreSQL sans toujours avoir à utiliser la psqlCLI. J'ai PostgreSQL 9.1 installé via le référentiel RPM, tandis que j'ai installé phpPgAdmin 5.0.4 "manuellement" (en extrayant l'archive du site Web phpPgAdmin). Pour mémoire, mon OS hôte est CentOS 6.2.

J'ai déjà effectué les modifications de configuration suivantes:

PostgreSQL

  • À l'intérieur pg_hba.conf, j'ai changé tous les METHODs en md5.
  • J'ai donné un mot de passe au compte postgres
  • J'ai ajouté un nouveau compte nommé webuser avec un mot de passe (notez que je n'ai rien fait d'autre sur le compte, donc je ne peux pas dire exactement que je sais de quelles autorisations il dispose et tout)

phpPgAdmin config.inc.php

  • Changé la ligne $conf['servers'][0]['host'] = '';en $conf['servers'][0]['host'] = '127.0.0.1';(j'ai également essayé d'utiliser localhost comme valeur).
  • Réglez $conf['extra_login_security']sur false.

Chaque fois que j'essaye de me connecter à phpPgAdmin, j'obtiens "Login failed", même si j'utilise des informations d'identification réussies (celles qui fonctionnent psql). J'ai essayé de suivre certaines des étapes indiquées dans la question 3 de la FAQ , mais cela n'a pas bien fonctionné jusqu'à présent. Cela n'aide probablement pas que ce soit mon premier jour de travail avec PostgreSQL. Je connais bien MySQL, mais je dois utiliser PostgreSQL pour le projet sur lequel je travaille.

Quelqu'un pourrait-il offrir de l'aide sur la façon de configurer phpPgAdmin sur CentOS 6.2? Si j'ai fait quelque chose de terriblement mal dans ma configuration jusqu'à présent, ce n'est pas grave de faire sauter quelque chose / tout, car ce n'est pas comme si j'y avais encore stocké de données!

J'apprécie tout aperçu que vous pourriez avoir!

Devin
la source

Réponses:

7

Eh bien, je l'ai compris - c'était une combinaison d'inexpérience avec PostgreSQL et d'erreurs très non descriptives de phpPgAdmin.

Il s'avère que je n'ai pas activé l'accès TCP / IP, ce qui signifie qu'aucune application PHP ne peut accéder aux bases de données . Pour résoudre ce problème, j'ai dû apporter deux modifications:

  • Il semblait fonctionner mieux si je mets listen_addressesà '*'en postgresql.conf. Je ne sais pas si c'est tout à fait nécessaire ou non, mais sur une machine bien pare-feu comme celle-ci, cela ne devrait pas poser de problème.
  • J'ai dû exécuter la commande à setsebool -P httpd_can_network_connect_db 1partir d'une fenêtre de terminal pour que Apache obtienne réellement le programme et se connecte. Je ne me souviens pas si j'ai dû redémarrer PostgreSQL après cette étape, mais cela ne ferait probablement pas de mal.

Une dernière remarque: j'ai vu quelques choses changer une ligne qui suggère tcpip_socket=truedans postgresql.conf. Cela ne fonctionne apparemment pas dans PostgreSQL 9.1. En fait, il a refusé de commencer après avoir ajouté cela. Alors ne le fais pas.

Quoi qu'il en soit, j'espère que cela peut aider quelqu'un qui rencontre les mêmes problèmes que moi!

Devin
la source
Sur les systèmes avec Security Enhanced Linux (SELinux), la définition de l' httpd_can_network_connect_dbindicateur avec setseboolest nécessaire.
postrational
Juste pour clarifier, vous n'avez pas nécessairement besoin d'un accès TCP / IP activé pour que phpPgAdmin (ou d'autres scripts PHP) se connecte à Postgres si vous êtes sur le même serveur, vous pouvez également vous connecter via une socket Unix locale. Vous rencontreriez probablement encore des problèmes liés à SELinux.
xzilla
0

Je n'ai pas pu configurer phpPgAdmin jusqu'à ce que je vois votre solution. Pour compléter votre solution:

  • il n'est pas utile de jeu listen_addressà '*'si votre serveur est phpPgAdmin sur le même ordinateur que votre serveur postgresql (9.2 pour moi), vous pouvez le régler à localhost.
  • la seule chose utile est de configurer le booléen SELinux.
user176931
la source
0

J'ai essayé la solution ci-dessus, mais j'ai toujours reçu le message «Échec de la connexion». Pour résoudre ce problème, je devais m'assurer que IPv6 est également défini sur passworddans le pg_hba.conffichier. Faites ainsi: vi /var/lib/pgsql/9.4/data/pg_hba.confet modifiez en conséquence. Redémarrez ensuite httpd et postgresql (quelle que soit la version que vous utilisez)

Olu
la source
0

Eh bien, l'utilisateur par défaut est postgres et aucun mot de passe d'une nouvelle installation. Donc, dans la boîte utilisateur, mettez cela et désactivez la boîte de mot de passe. Cliquez sur. terminé.

Si vous avez utilisé pgAdmin4 et entré un mot de passe lors de la première connexion, c'est le mot de passe que vous utilisez pour l'utilisateur postgres . Maintenant, dans phppgadmin, saisissez postgres comme nom d'utilisateur et ce mot de passe dans la zone de mot de passe. Cliquez sur. Terminé. Je vous remercie

NetBug
la source
0

En cours d'exécution sur un serveur avec GitLab-CE , le message que je reçois sur le fichier journal était:

tail -f -n 8 /var/log/postgresql/postgresql-*-main.log
......
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 LOG:  provided user name (postgres) and authenticated user name (gitlab-www) do not match
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 FATAL:  Peer authentication failed for user "postgres"
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 DETAIL:  Connection matched pg_hba.conf line 85: "local   all             postgres                                peer"

donc, je me connecte à psqlvia cli et crée le rôle / utilisateur manquant (dans mon cas gitlab-www):

# sudo -u postgres psql
CREATE USER "gitlab-www" WITH PASSWORD 'YouKnow..' CREATEDB CREATEROLE SUPERUSER LOGIN;

Et puis, le processus de connexion ouvre ses portes.

fcm
la source
En général, l'authentification par les pairs limitera l'utilisateur donné à seulement pouvoir accéder à Postgres via la ligne de commande (comme avec psql), et ne fonctionnera généralement pas avec phpPgAdmin. La création d'un nouvel utilisateur est une bonne solution, mais vous pouvez aussi simplement changer la méthode d'authentification dans le pg_hba.conf.
xzilla