HOWTO · PostgreSQL
Puerto predeterminado de PostgreSQL
Este artículo aclara todas las confusiones que los usuarios pueden tener al descubrir el puerto predeterminado correcto de PostgreSQL y los ayuda a navegar a través de los errores que pueden aparecer.
En esta página
El puerto predeterminado de PostgreSQL es 5432. Este es el valor predeterminado que usan los clientes y la configuración del servidor de PostgreSQL; no demuestra que haya un servidor ejecutándose en tu equipo, escuchando en ese puerto o accesible desde tu cliente. Un paquete, administrador o despliegue puede configurar otro puerto.
¿Cuál es el puerto predeterminado de PostgreSQL?
El puerto 5432 es el valor predeterminado convencional para las conexiones de PostgreSQL mediante TCP/IP. Un cliente necesita el host y el puerto del servidor, además de credenciales válidas para la base de datos y el rol. localhost se refiere al mismo equipo que el cliente, así que úsalo solo si el servidor es local. El nombre de la base de datos, el rol, la contraseña y el host dependen de la instalación; no existe una cuenta de prueba universal.
Un puerto identifica un punto de conexión de red en un host. Se distingue de un socket de dominio Unix, que se conecta mediante una ruta del sistema de archivos local en lugar de un par de host y puerto TCP. Los dos métodos de conexión pueden llegar a distintas instancias de PostgreSQL, incluso si se usan desde el mismo equipo.
Comprueba qué instancia de PostgreSQL está escuchando
Conéctate a la instancia que quieres comprobar y consulta su identidad y configuración. En una sesión de psql, ejecuta SELECT version();, SHOW data_directory;, SHOW config_file; y SHOW port;. Los resultados indican la versión del servidor, su directorio de datos, el archivo de configuración que lee y el puerto configurado. Como el servidor devuelve estos valores, ayudan a distinguir entre instancias cuando hay varias instaladas o en ejecución.
El programa cliente y el servidor son independientes: encontrar un ejecutable de psql en tu PATH no permite saber a qué servidor se conecta. Si un comando llega a una instancia inesperada, comprueba qué ejecutable de psql selecciona tu shell e indica explícitamente el host y el puerto deseados. En sistemas similares a Unix, omitir -h puede seleccionar un socket local; -h localhost solicita una conexión TCP. El directorio del socket se controla con la opción unix_socket_directories del servidor seleccionado.
Conéctate a PostgreSQL en un puerto específico
Para un servidor local, usa psql -h localhost -p 5432 -U your_role -d your_database. Sustituye los marcadores del rol y la base de datos por los valores configurados para tu instancia. Para probar otro puerto configurado, como 5433, cambia el valor que sigue a -p; el ejemplo no implica que haya otro servidor disponible en ese puerto. Para un servidor remoto, sustituye localhost por su nombre de host o dirección y comprueba que el servidor esté configurado para aceptar conexiones de tu cliente.
El siguiente fragmento de Python construye un comando de cliente para un servidor local en su puerto predeterminado. Muestra el comando, pero no inicia psql ni se conecta a una base de datos. Ejecuta el comando mostrado en un shell después de confirmar que el cliente está instalado y que los datos de conexión coinciden con los de tu servidor.
El código y las etiquetas o salidas visibles de esta sección se mantienen en inglés.
import shlex
host = "localhost"
port = 5432
database = "my_database"
role = "my_role"
command = ["psql", "-h", host, "-p", str(port), "-U", role, "-d", database]
print(shlex.join(command))
Cambia el puerto de escucha de PostgreSQL
Primero, conéctate a la instancia deseada y ejecuta SHOW config_file; para localizar el archivo de configuración que realmente utiliza. Busca allí la opción port; las rutas varían según el paquete, así que no des por hecho una ruta basándote solo en el sistema operativo. Asigna el valor del puerto que quieras y luego reinicia esa instancia de PostgreSQL para que el cambio del puerto de escucha surta efecto. Consulta el administrador de servicios o las instrucciones del despliegue para saber cómo reiniciar esa instancia.
Después del reinicio, conéctate con psql usando el nuevo puerto y ejecuta SHOW port; para confirmar el valor configurado en el servidor. Si otro proceso ya ocupa el puerto elegido, PostgreSQL podría no conseguir enlazarse ni empezar a escuchar. Elige un puerto libre o resuelve el conflicto y consulta los registros de inicio del servidor para conocer el error concreto. No des por hecho que el instalador elegirá automáticamente un puerto sustituto.
Soluciona problemas del puerto y las conexiones de PostgreSQL
Si una conexión falla o llega al servidor equivocado, comprueba estos puntos en orden:
- Host y puerto: Confirma que el cliente use el host deseado y el puerto configurado para ese servidor. El puerto 5432 es solo el valor predeterminado; los despliegues pueden usar otro.
- Identidad de la instancia: Si la conexión funciona, pero muestra datos inesperados, ejecuta
SELECT version();,SHOW data_directory;ySHOW port;en esa sesión. Compara los resultados con los de la instancia deseada. - Método de conexión: Comprueba si el cliente usa TCP/IP o un socket local. Usa
-h localhostpara solicitar TCP en el equipo local; si usas un socket, confirma el directorio de sockets de la instancia seleccionada. - Escucha y configuración de acceso: Confirma que el servidor esté en ejecución, pueda enlazarse al puerto seleccionado y esté configurado para aceptar conexiones en la interfaz de red solicitada. El acceso remoto también depende de las reglas de acceso del servidor y de los controles de red.
- Detalles del cliente y el servidor: Asegúrate de que el cliente
psqlseleccionado sea el que quieres usar y proporciona la base de datos, el rol y los parámetros de autenticación configurados para la instancia.
Los comandos del sistema operativo para encontrar el proceso que ocupa un puerto varían; usa la herramienta de inspección de conexiones en escucha documentada para tu plataforma. El resultado puede identificar un proceso, pero las comprobaciones SQL anteriores también sirven para confirmar qué instancia de PostgreSQL aceptó la conexión.