/etc/services
es solo un aviso, es una lista de puertos conocidos. No significa que algo realmente se esté ejecutando en ese puerto o que el servicio nombrado se ejecutará en ese puerto.
En el caso de PostgreSQL, es típico usar el puerto 5432 si está disponible. Si no es así, la mayoría de los instaladores elegirán el próximo puerto libre, generalmente 5433.
Puede ver qué se está ejecutando realmente con la netstat
herramienta (disponible en OS X, Windows y Linux, con una sintaxis de línea de comandos que varía entre los tres).
Esto se complica aún más en los sistemas Mac OS X por el horrible desastre de diferentes paquetes de PostgreSQL: la antigua versión de PostgreSQL de Apple integrada en el sistema operativo, Postgres.app, Homebrew, Macports, el instalador EnterpriseDB, etc.
Lo que termina sucediendo es que el usuario instala Pg e inicia un servidor desde un paquete, pero usa el cliente psql
y libpq
desde un paquete diferente. Por lo general, esto ocurre cuando ejecutan Postgres.app o homebrew Pg y se conectan con el psql
que se incluye con el sistema operativo. No solo a veces tienen puertos predeterminados diferentes, sino que la Pg que se incluye con Mac OS X tiene una ruta de socket Unix predeterminada diferente , por lo que incluso si el servidor se ejecuta en el mismo puerto, no escuchará el mismo socket Unix.
La mayoría de los usuarios de Mac evitan esto simplemente usando 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 ejecutándose, así que asegúrese de conectarse a la correcta utilizando select version()
y SHOW data_directory;
.
También puede especificar un directorio de socket Unix; verifique la unix_socket_directories
configuración de la instancia de PostgreSQL a la que desea conectarse y especifique eso con psql -h
, por ejemplo psql -h /tmp
.
Una solución más limpia es corregir su sistema PATH
para que lo que se encuentre primero en el psql
y libpq
asociado con el PostgreSQL que realmente está ejecutando PATH
. Los detalles dependen de la versión de Mac OS X y de los paquetes de Pg que haya instalado. No uso Mac y no puedo ofrecer muchos más detalles de ese lado sin pasar más tiempo del que está disponible actualmente.
PGPORT
está definida: postgresql.org/docs/current/static/libpq-envars.html