No se puede iniciar sesión en phpPgAdmin

10

Estoy tratando de configurar phpPgAdmin en mi máquina de prueba para poder interactuar con PostgreSQL sin tener que usar siempre la psqlCLI. Tengo PostgreSQL 9.1 instalado a través del repositorio RPM, mientras que instalé phpPgAdmin 5.0.4 "manualmente" (extrayendo el archivo del sitio web phpPgAdmin). Para el registro, mi sistema operativo host es CentOS 6.2.

Ya hice los siguientes cambios de configuración:

PostgreSQL

  • En el interior pg_hba.conf, cambié todo METHODs a md5.
  • Le di una contraseña a la cuenta de Postgres
  • Agregué una nueva cuenta llamada webuser con una contraseña (tenga en cuenta que no hice nada más a la cuenta, por lo que no puedo decir exactamente que sé qué permisos tiene y todo)

phpPgAdmin config.inc.php

  • Cambié la línea $conf['servers'][0]['host'] = '';a $conf['servers'][0]['host'] = '127.0.0.1';(también he intentado usar localhost como el valor allí).
  • Establecer $conf['extra_login_security']a false.

Cada vez que intento iniciar sesión en phpPgAdmin, aparece "Error de inicio de sesión", incluso si uso credenciales exitosas (que funcionan psql). He tratado de seguir algunos de los pasos que se indican en la Pregunta 3 en las Preguntas frecuentes , pero hasta ahora no ha funcionado bien. Probablemente no ayude que este sea mi primer día trabajando con PostgreSQL. Estoy muy familiarizado con MySQL, pero tengo que usar PostgreSQL para el proyecto en el que estoy trabajando.

¿Alguien podría ofrecer alguna ayuda sobre cómo configurar phpPgAdmin en CentOS 6.2? Si he hecho algo terriblemente mal en mi configuración hasta ahora, no es gran cosa volar algo / todo, ¡ya que no es como si hubiera almacenado datos allí todavía!

Agradezco cualquier idea que pueda tener!

Devin
fuente

Respuestas:

7

Bueno, lo descubrí: era una combinación de inexperiencia con PostgreSQL y errores muy no descriptivos de phpPgAdmin.

Resulta que no tenía habilitado el acceso TCP / IP, lo que significaba que ninguna aplicación PHP podía acceder a las bases de datos . Para solucionar esto, tuve que hacer dos cambios:

  • Parecía funcionar mejor si fijo listen_addressesa '*'en postgresql.conf. No estoy seguro de si eso es completamente necesario o no, pero en una máquina bien protegida como esta, no debería ser un problema.
  • Tuve que ejecutar el comando setsebool -P httpd_can_network_connect_db 1desde una ventana de terminal para que Apache realmente se conectara con el programa. No recuerdo si tuve que reiniciar PostgreSQL después de este paso, pero probablemente no me haría daño.

Una nota final: Vi algunas cosas que sugieren el cambio de una línea tcpip_socket=trueen postgresql.conf. Esto aparentemente no funciona en PostgreSQL 9.1. De hecho, se negó a comenzar después de que agregué eso. Entonces no lo hagas.

De todos modos, ¡espero que esto pueda ayudar a alguien que tenga los mismos problemas que yo!

Devin
fuente
En sistemas con Security Enhanced Linux (SELinux), es necesario configurar el httpd_can_network_connect_dbindicador con setsebool.
2013 postracional
Solo para aclarar, no necesariamente necesita el acceso TCP / IP habilitado para obtener phpPgAdmin (u otros scripts PHP) para conectarse a Postgres si está en el mismo servidor, puede conectarse alternativamente a través de un socket local de Unix. Sin embargo, probablemente todavía se encuentre con problemas relacionados con SELinux.
xzilla
0

No pude configurar phpPgAdmin hasta que vi su solución. Para completar su solución:

  • no es útil para conjunto listen_addressde '*'si el servidor es phpPgAdmin en el mismo equipo que el servidor de PostgreSQL (9.2 por mí), se puede establecer que a localhost.
  • lo único que es útil es configurar el booleano SELinux.
usuario176931
fuente
0

Intenté la solución anterior pero aún recibí el mensaje 'Error de inicio de sesión'. Para resolverlo, tuve que asegurarme de que IPv6 también esté configurado passworden el pg_hba.confarchivo. Entonces hazlo: vi /var/lib/pgsql/9.4/data/pg_hba.confy edita en consecuencia. Luego reinicie httpd y postgresql (cualquiera que sea la versión que esté usando)

Olu
fuente
0

Bueno, el usuario predeterminado es postgres y no tiene contraseña de una nueva instalación. Entonces, en el cuadro de usuario, coloque esto y borre el cuadro de contraseña. Hacer clic. hecho.

Si usó pgAdmin4 e ingresó una contraseña en el primer inicio de sesión, esa es la contraseña que usa para el usuario postgres . Ahora en phppgadmin escriba postgres como nombre de usuario y esa contraseña en el cuadro de contraseña. Hacer clic. Hecho. Gracias

NetBug
fuente
0

Ejecutando en un servidor con GitLab-CE , el mensaje que recibí en el archivo de registro fue:

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"

entonces, me conecto a psqltravés de cli y creo el rol / usuario que falta (en mi caso gitlab-www):

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

Y luego, el proceso de inicio de sesión abre sus puertas.

fcm
fuente
En general, la autenticación entre pares limitará al usuario dado a solo poder acceder a Postgres a través de la línea de comando (como con psql), y generalmente no funcionará con phpPgAdmin. Crear un nuevo usuario es una buena solución, pero también puede cambiar el método de autenticación en pg_hba.conf.
xzilla