sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Confusión de puerto postgresql 5433 o 5432?

/etc/services es solo un consejo, es una lista de puertos conocidos. No significa que realmente se esté ejecutando algo en ese puerto o que el servicio mencionado 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 siguiente puerto libre, generalmente 5433.

Puede ver lo que realmente se está ejecutando usando netstat herramienta (disponible en OS X, Windows y Linux, con 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 desorden horrible de los diferentes paquetes de PostgreSQL:la versión antigua de PostgreSQL de Apple integrada en el sistema operativo, Postgres.app, Homebrew, Macports, el instalador de EnterpriseDB, etc., etc.

Lo que termina sucediendo es que el usuario instala Pg e inicia un servidor desde un paquete, pero usa el psql y libpq cliente de un embalaje diferente. Por lo general, esto ocurre cuando ejecutan Postgres.app o homebrew Pg y se conectan con psql que se envió con el sistema operativo. No solo estos a veces tienen puertos predeterminados diferentes, sino que el Pg que se envió 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 de Unix.

La mayoría de los usuarios de Mac solucionan 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 usando select version() y SHOW data_directory; .

También puede especificar un directorio de socket de Unix; verifique los unix_socket_directories configuración de la instancia de PostgreSQL a la que desea conectarse y especifíquelo con psql -h , por ejemplo, psql -h /tmp .

Una solución más limpia es corregir su sistema PATH para que el psql y libpq asociado con el PostgreSQL que está ejecutando en realidad es lo que se encuentra primero en el PATH . Los detalles de eso dependen de su 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 gastar más tiempo del que está disponible actualmente.