Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Cómo solucionar los problemas de conexión de Doctrine con PostgreSQL en CentOS 7

3 de febrero de 2015

Buenas noches, hace unos días me salió este error al pasar al capítulo de base de datos con Postgresql.

An exception occured in driver: SQLSTATE[08006] [7] could not connect to server:
Permission denied. Is the server running on host "192.168.100.51" and accepting
TCP/IP connections on port 5432?

Y lo posteo con la solución que encontré luego de varias horas :)

Primero revisé mi configuración de PosgreSQL:

pg_hba.config
 
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.100.0/24        md5

Revisar si otras IP de tu LAN pueden acceder al servidor PosgreSQL.

pg_posgres.conf
 
listen_addresses = '*'          
port = 5432

Después, verificar que el parámetro listen_addresses = '*' no esté comentado con #. Esto permite al servidor recibir conexiones desde cualquier otro IP.

Y el parámetro port = 5432, verificar que no esté comentado con #. Indica el puesto por donde se conectan al PostgreSQL.

Cambiar esos datos y reiniciar el servicio del PostgreSQL. Hasta ahí y todo OK.

Pero no olvidar este paso importante por el cual me salía el error anterior :( Después de mucha búsqueda encontré que debía desactivar el SELinux, que es el módulo de seguridad de Linux, o en todo caso configurar para que aceptara las conexiones de PostgreSQL.

Como no soy muy experto en el tema, entré a la consola del servidor:

/usr/sbin/sestatus | grep SELinux

Te va mostrar lo siguiente:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux

Editamos a la configuración del SELinux en /etc/selinux/config.

Cambiamos el parámetro SELINUX=enforcing por el siguiente parámetro SELINUX=disabled y reiniciamos el servidor CentOS 7. Tal vez es algo muy básico, pero es por esta razón no puede continuar con el capitulo 8.

Espero les ayude por si tienen el mismo problema.

saludos.


Respuestas

#1

Muchas gracias por publicar aquí la respuesta a tus problemas y por explicarlo con tanto detalle. Eso sí, me gustaría decirte que la solución es un poco excesiva, ya que estás deshabilitando toda la protección extra de seguridad de SELinux, lo cual no es muy recomendado.

Según he visto en este post, este problema podrías haberlo resuelto manteniendo activo SELinux, pero permitiendo las conexiones a las bases de datos. Para ello, deberías ejecutar el siguiente comando en la consola:

$ setsebool -P httpd_can_network_connect_db 1

Y en este otro artículo tienes más información sobre las opciones configurables de SELinux.

@javiereguiluz

3 febrero 2015, 8:55
#2

Gracias por la ayuda @javiereguiluz. Revisaré la documentación para aprender más. >)

@NilStark

3 febrero 2015, 23:48