123 votos

confusión del puerto de postgresql 5433 o 5432?

He instalado postgresql en OSX. Cuando ejecuto psql, obtengo

$ psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5433"?

Sin embargo, desde /etc/servicios

postgresql      5432/udp    # PostgreSQL Database
postgresql      5432/tcp    # PostgreSQL Database
#                          Tom Lane <tgl@sss.pgh.pa.us>
pyrrho          5433/tcp    # Pyrrho DBMS
pyrrho          5433/udp    # Pyrrho DBMS

5433 está ocupado por pyrrho, 5432 está asignado a pg. Puedo conectar con

psql -p 5432

pero ¿por qué psql cree que es 5433 y cómo hago para que psql busque en el lugar correcto por defecto?

180voto

Craig Ringer Puntos 72371

/etc/services es sólo consultivo, es un listado de puertos conocidos. No significa que nada se esté ejecutando realmente en ese puerto o que el servicio nombrado se ejecute en ese puerto.

En el caso de PostgreSQL es típico utilizar el puerto 5432 si está disponible. Si no lo está, la mayoría de los instaladores elegirán el siguiente puerto libre, normalmente el 5433.

Puede ver lo que se está ejecutando en realidad utilizando la función netstat (disponible en OS X, Windows y Linux, con una sintaxis de línea de comandos que varía en los tres).

Esto se complica aún más en los sistemas Mac OS X por el horrible lío de diferentes paquetes de PostgreSQL - la antigua versión de Apple de PostgreSQL integrada en el sistema operativo, Postgres.app, Homebrew, Macports, el instalador de EnterpriseDB, etc, etc.

Lo que acaba ocurriendo es que el usuario instala Pg y arranca un servidor desde un envase, pero utiliza el psql y libpq cliente de un paquete diferente. Normalmente esto ocurre cuando están ejecutando Postgres.app o Pg homebrew y se conectan con el psql que se suministran con el sistema operativo. No sólo estos tienen a veces diferentes puertos por defecto, sino que el Pg que viene con Mac OS X tiene un ruta de socket unix por defecto Por lo tanto, aunque el servidor se ejecute en el mismo puerto, no estará escuchando el mismo socket unix.

La mayoría de los usuarios de Mac solucionan esto utilizando simplemente tcp/ip con psql -h localhost . También puede especificar un puerto si es necesario, por ejemplo psql -h localhost -p 5433 . Es posible que tenga varias instancias de PostgreSQL en ejecución, así que asegúrese de que se está conectando a la correcta utilizando select version() y SHOW data_directory; .

Una solución más limpia es corregir su sistema PATH para que el psql y libpq asociado con el PostgreSQL que se está ejecutando es lo que se encuentra primero en el PATH . Los detalles de esto dependen de tu versión de Mac OS X y de los paquetes Pg que tengas instalados. No utilizo Mac y no puedo ofrecer muchos más detalles al respecto sin dedicar más tiempo del que dispongo actualmente.

22voto

DavidLStacy Puntos 11

La respuesta rápida en OSX, es configurar las variables de entorno.

export PGHOST=localhost

export PGPORT=5432

O lo que necesites.

14voto

Risadinha Puntos 1254

El puerto por defecto de Postgres está configurado en:

sudo vi /<path to your installation>/data/postgresql.conf

Buscar port en este archivo.

6voto

highBandWidth Puntos 3872

Gracias a @un_caballo_sin_nombre 's comentario En el caso de los usuarios de la red, he cambiado la definición de PGPORT a 5432 en pg_env.sh. Eso me solucionó el problema. No sé por qué postgres lo puso como 5433 inicialmente cuando estaba alojando el servicio en 5432.

3voto

Krazzzeee Puntos 46

Yo también me encontré con este problema, resultó que tenía dos servidores postgres funcionando al mismo tiempo. Desinstalé uno de ellos y cambié el puerto de nuevo a 5432 y ahora funciona bien.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X