instalar postgresql en Ubuntu, macOS, Windows y Docker: guía práctica
instalar postgresql requiere decisiones sobre versión, método de instalación y configuración inicial. Este texto ofrece pasos concretos para Ubuntu/Debian, CentOS/RHEL, macOS, Windows y Docker, además de ajustes de seguridad, comandos esenciales, copias de seguridad y corrección de errores frecuentes.
instalar postgresql en Debian y Ubuntu
Para servidores Debian/Ubuntu se recomiendan dos opciones: usar los paquetes del sistema o añadir el repositorio oficial de PostgreSQL para acceder a versiones más recientes. Ejemplos prácticos:
- Instalación rápida con paquetes del sistema: sudo apt update && sudo apt install postgresql postgresql-contrib.
- Instalar una versión específica desde el repositorio oficial: añadir el repositorio del proyecto PostgreSQL, actualizar e instalar postgresql-14 o la versión requerida.
Pasos básicos tras la instalación: asegurar que el servicio esté activo con sudo systemctl enable –now postgresql, comprobar el estado con sudo systemctl status postgresql y cambiar a la cuenta postgres para administrar roles: sudo -i -u postgres.
instalar postgresql en CentOS, RHEL y Fedora
En distribuciones basadas en RPM conviene usar el repositorio de PostgreSQL o los paquetes del sistema según la versión necesaria. Comandos típicos:
- Instalar paquetes: sudo dnf install postgresql-server postgresql-contrib o en versiones antiguas yum install postgresql-server.
- Inicializar la base de datos: sudo postgresql-setup –initdb (en algunas distros) o sudo /usr/pgsql-XX/bin/initdb -D /var/lib/pgsql/data.
- Habilitar y arrancar: sudo systemctl enable –now postgresql.
Tener en cuenta SELinux y firewalld: abrir el puerto 5432 y, si hay políticas estrictas, crear reglas específicas para el proceso postgres.
instalar postgresql en macOS y Windows
macOS
La forma más sencilla en macOS es Homebrew: brew install postgresql. Iniciar el servicio con brew services start postgresql. Para desarrollo, Homebrew es suficiente; para producción en mac no es habitual ejecutar cargas críticas, en ese caso considerar un servidor Linux o una instancia gestionada en la nube.
Windows
En Windows lo más habitual es usar el instalador oficial (EnterpriseDB) que incluye asistente, herramienta de gestión y opción para instalar Stack Builder con extensiones. Alternativas: usar WSL2 y ejecutar la versión Linux de PostgreSQL o desplegar un contenedor Docker. Después de la instalación por instalador, verificar que el servicio PostgreSQL esté en ejecución y que el puerto 5432 esté accesible acorde a la política de firewall de Windows.
instalar postgresql con Docker (entorno de desarrollo o despliegue)
Para entornos de desarrollo o despliegues contenerizados, Docker facilita gestionar versiones y persistencia de datos. Ejemplo de comando:
- docker run –name pg -e POSTGRES_PASSWORD=MiPass -p 5432:5432 -v pgdata:/var/lib/postgresql/data -d postgres:14
Ventaja: aislamiento y facilidad para reproducir entornos. Precaución: para producción conviene usar volúmenes gestionados con backups regulares y monitorización del rendimiento del host.
Configuración inicial y seguridad
Tras instalar, ajustar estos puntos mínimos antes de poner la base de datos en producción:
- Modificar postgresql.conf para establecer listen_addresses (por ejemplo ‘localhost’ o ‘*’ según necesidad) y ajustar parámetros de rendimiento básicos como shared_buffers y max_connections.
- Revisar pg_hba.conf para definir métodos de autenticación por red: preferir md5 o scram-sha-256 en lugar de trust. Añadir únicamente las redes necesarias y negar el resto.
- Crear roles con mínimos privilegios: usar createuser –pwprompt nombre o comandos SQL para roles específicos. Evitar el uso diario del rol postgres.
- Configurar copias de seguridad automatizadas y supervisar tamaños de WAL. Habilitar el registro (logging) para auditar accesos y errores.
- Si se expone a internet, proteger con firewall, usar conexiones SSL entre cliente y servidor y restringir el acceso por IP.
Comandos básicos y gestión de roles
Comandos útiles para administración cotidiana:
- Acceder al shell de PostgreSQL: sudo -i -u postgres psql.
- Crear base de datos y usuario: createuser -P appuser y createdb -O appuser appdb.
- Asignar privilegios con SQL: GRANT CONNECT ON DATABASE appdb TO appuser; y permisos de esquema/tablas según corresponda.
- Parar/arrancar servicio: sudo systemctl stop postgresql, sudo systemctl start postgresql.
Respaldo, restauración y migraciones
Para copias y migraciones se recomiendan dos enfoques según el caso:
- Exportación lógica con pg_dump y pg_restore para migrar esquemas y datos: ejemplo de respaldo en formato personalizado: pg_dump -Fc -U usuario basededatos -f backup.dump y restauración con pg_restore -d nueva_db -U usuario backup.dump.
- Backups físicos y WAL shipping para recuperación punto en el tiempo en sistemas con alto volumen: usar pg_basebackup y archivado de WAL para recuperar estados intermedios.
Mini-caso: una aplicación web con picos de tráfico implementó backups diarios por pg_dump y copias de WAL cada 15 minutos. Esto permitió restaurar hasta 15 minutos antes en caso de corrupción de datos, minimizando pérdida de información.
Errores comunes y soluciones prácticas
- Error: «could not connect to server»: comprobar que el servicio está en ejecución, verificar listen_addresses, firewall y que se usa el puerto correcto (5432 por defecto).
- Error de autenticación: revisar pg_hba.conf y el método (md5/scram). Tras cambios en pg_hba.conf, recargar con sudo systemctl reload postgresql.
- Problemas de versión al restaurar dump: usar el mismo o compatible cliente psql/pg_restore; en migraciones mayores considerar herramientas como pg_upgrade o realizar dump/restore a una versión intermedia.
- Alto consumo de memoria: ajustar shared_buffers (por ejemplo 25% de RAM para bases de datos dedicadas) y configurar work_mem según consultas pesadas.
¿Cuándo conviene elegir PostgreSQL y cuándo no?
PostgreSQL es recomendable cuando se necesita integridad transaccional sólida, soporte avanzado de consultas SQL, extensiones (PostGIS, pg_partman) y cumplimiento ACID. No es la mejor opción para cargas exclusivamente clave-valor con latencia mínima donde una base de datos en memoria específica puede resultar más adecuada. Para sistemas analíticos masivos, considerar arquitecturas con almacenes columnar o data lakes complementarios.
En resumen, instalar postgresql puede ser rápido, pero la decisión de versión, método de despliegue y configuración determina la fiabilidad a largo plazo. Seguir buenas prácticas de seguridad, automatizar backups y probar restauraciones reduce riesgos operativos. Para entornos de desarrollo, Docker o Homebrew son muy prácticos; para producción, elegir repositorios oficiales, configurar monitorización y ajustar parámetros según la carga.
Al final de la puesta en marcha, comprobar conexiones desde la aplicación, realizar una copia de seguridad inicial y documentar el proceso de recuperación son pasos que garantizan que instalar postgresql no se convierta en un problema futuro.

