Instalá PostgreSQL en Linux, macOS, Windows y Docker: Guía Paso a Paso
Instalá PostgreSQL en Linux, macOS, Windows y Docker: Guía Paso a Paso
Introducción
PostgreSQL es un sistema de gestión de bases de datos relacionales de código abierto, conocido por su fiabilidad, rendimiento y cumplimiento de estándares SQL. Muchas personas, desarrolladores y empresas lo eligen para aplicaciones pequeñas y grandes, tanto en entornos de desarrollo como de producción.
En esta guía práctica, vas a aprender a instalar PostgreSQL en cuatro plataformas principales: Linux (distribuciones basadas en apt y yum), macOS (Homebrew), Windows (instalador gráfico) y un contenedor Docker. Cada sección incluye comandos exactos con la salida esperada, consejos de verificación y algunas recomendaciones de seguridad y mejores prácticas.
Querés una base de datos lista para usar en poco tiempo, y podés hacerlo sin complicaciones. A continuación, los pasos detallados.
Requisitos previos
Antes de empezar, tenés que asegurarte de que el sistema cumpla con requisitos básicos:
- Permisos de administrador (sudo en Linux, administrador en Windows) – vas a necesitar elevar privilegios para instalar paquetes o abrir puertos.
- Al menos 1 GB de RAM – suficiente para un servidor de prueba.
- Espacio libre en disco – PostgreSQL generalmente necesita unos pocos gigabytes, pero podés instalar una versión mínima sin problemas.
- Red – el instalador tratará de abrir el puerto 5432; si tenés un firewall, querés permitirlo.
- Cliente psql – la mayoría de los sistemas ya lo incluyen; si no, lo instalarás junto con el servidor.
Si cumplís con estos requisitos, estás listo para empezar en cualquiera de los sistemas operativos.
Instalación en Linux
Linux ofrece dos métodos principales: el gestor de paquetes apt (Ubuntu, Debian, Mint) y yum/dnf (CentOS, RHEL, Fedora). Ambos son simples y dejan el servidor listo para usar.
Ubuntu / Debian (apt)
sudo apt update
sudo apt install -y postgresql postgresql-contribUna vez finalizada la instalación, el servicio se inicia automáticamente. Podés verificarlo así:
systemctl status postgresqlSalida típica:
● postgresql.service - PostgreSQL DBMS
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2024-05-07 12:34:56 ART; 5s ago
Process: 12345 postgresql -D /var/lib/postgresql/14/main (code=exited, status=0/SUCCESS)
Main PID: 12457 (postgres)
Tasks: 4 (limit: 1000)
Memory: 24.0M
CGroupExact: /system.slice/postgresql.service
└─12457 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/14/mainEl usuario postgres ya existe. Podés acceder con:
sudo -u postgres psqlVerás el prompt de psql (postgres=#). Si querés salir, simplemente ejecutá \q.
CentOS / RHEL / Fedora (yum / dnf)
sudo yum install -y postgresql-server
sudo postgresql-setup --initdb
sudo systemctl enable postgresql
sudo systemctl start postgresqlPara Fedora 22+, usá dnf en vez de yum. La salida será similar a la de abajo (se ha truncado para brevedad):
Eliminando paquetes obsoletos:
some-package.x86_64 0B
Instalando:
postgresql-server-13.5-1.el8.x86_64 1.3 MB
...
Ejecutando postgresql-setup... Inicializando la base de datos del cluster ... ¡LISTO!Ahora podés verificar el estado igual que antes:
sudo systemctl status postgresqlY acceder con:
sudo -u postgres psqlInstalación en macOS
macOS ofrece una de las formas más sencillas: Homebrew. Si ya tenés Homebrew instalado, podés instalar PostgreSQL en un solo paso.
brew update
brew install postgresqlHomebrew instala el servidor como un servicio de launchd. Para iniciarlo:
brew services start postgresqlVerifica que esté corriendo:
brew services listSalida esperada:
Name Status
postgresql startedEl cliente psql se instala automáticamente en /usr/local/bin/psql. El usuario actual puede acceder a PostgreSQL usando:
psql postgresSi obtenés un error de "conexión rechazada", es probable que el servidor no haya sido iniciado automáticamente. Podés ejecutar brew services restart postgresql para solucionarlo.
Alternativa: MacPorts
Si preferís MacPorts, el proceso es similar:
sudo port install postgresql94El servidor se encuentra en /opt/local/var/db/postgresql94/defaultdb. Podés iniciarlo con pg_ctl -D /opt/local/var/db/postgresql94/defaultdb -l logfile start.
Instalación en Windows
Windows ofrece un instalador gráfico que guía a través del proceso. Los pasos son simples y la interfaz te permite configurar el puerto, la carpeta de datos y el superusuario sin editar archivos.
- Descargá el instalador desde https://www.enterprisedb.com/downloads/postgresql‑latest.
- Ejecutá el instalador
.exe. Elegí "Instalar como servicio" (para que PostgreSQL arranque con Windows) o "Solo herramientas" si solo querés el cliente. - En la pantalla de "Configuración del servidor", dejá el puerto predeterminado 5432, elegí una carpeta de datos (ej.
C:\Program Files\PostgreSQL\14\data) y creá un superusuario (ej.postgres). - Cuando termine la instalación, marcá "Ejecutar pgAdmin" si querés una interfaz gráfica, o abrí un Símbolo del sistema y ejecutá:
psql -U postgres -h localhost -p 5432Si todo va bien, verás:
psql (14.5)
Escribe un comando o presiona \q para salir.
postgres=#El servidor está listo y podés empezar a crear bases de datos.
Instalación vía Docker
Si preferís un entorno aislado y portable, Docker es la opción ideal. La imagen oficial de PostgreSQL incluye un servidor listo para usar con un servidor de pruebas básico.
Paso a paso
# Asegurarte de que Docker está corriendo
docker version
# Ejecutar un contenedor (mapeando el puerto 5432 local)
docker run --name my-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecret \
-e POSTGRES_DB=mydb \
-p 5432:5432 \
-d postgres:14Se mostrará el ID del contenedor. Podés chequearlo con:
docker psSalida esperada (truncada):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abc1234567890 postgres:14 "docker-entrypoint.s…" 2 seconds ago Up 1 second 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp my-postgresAhora podés conectarte con psql desde la misma máquina:
psql -U postgres -h localhost -p 5432 mydbSi todo está bien, verás:
psql (14.5)
Base de datos: mydb
=>Si querés mapear un volumen para persistir datos, agregá:
-v "$(pwd)/pgdata:/var/lib/postgresql/data"Al contenedor. Ejemplo:
docker run --name my-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecret \
-e POSTGRES_DB=mydb \
-p 5432:5432 \
-v "$(pwd)/pgdata:/var/lib/postgresql/data" \
-d postgres:14Buenas prácticas y errores comunes
1. Seguridad del servidor
- Cambiar la contraseña del superusuario: Usá
ALTER USER postgres PASSWORD 'tuContraseñaSegura';después de la primera conexión. - Configurar pg_hba.conf: Asegurate de que solo las conexiones locales o de confianza tengan acceso, por ejemplo,
local all all peerpara la autenticación basada en usuarios del sistema. - Cerrar el puerto 5432 si no está en uso: Si estás en una red corporativa, asegura el firewall:
iptables -A INPUT -p tcp --dport 5432 -j ACCEPT(o usa la interfaz gráfica).
2. Ajustes de rendimiento
- Compartir memoria: Para servidores con poca RAM, usá
shared_buffers = 128MBenpostgresql.conf. - Work_mem: Ajustalo según tus consultas; un valor típico para SELECT es
4MB. - max_connections: Si esperás muchas conexiones simultáneas, aumentá este valor gradualmente.
3. Respaldos
- Respaldos completos: Usá
pg_dumpall > respaldo_completo.sqlperiódicamente. - Respaldos diferenciales:
pg_dump -F d -f diff/ mi_basepara un respaldo de solo cambios. - Almacenamiento: Guardá los respaldos en un volumen separado o en un servicio en la nube; nunca en el mismo servidor.
4. Errores frecuentes
| Error | Causa | Solución |
|---|---|---|
psql: comando no encontrado |
El cliente no está en el PATH. | Instalá postgresql-client (Linux) o verifica la ruta de Homebrew (/usr/local/bin). |
FATAL: contraseña incorrecta para usuario "postgres" |
La contraseña fue cambiada o nunca se estableció. | Usá ALTER USER postgres PASSWORD '...'; o reinstalá el servidor. |
FATAL: no hay conexión con el servidor |
El servidor no está corriendo o el puerto está bloqueado. | Chequear systemctl status postgresql o docker ps. Asegurar que el puerto no esté en uso. |
El servicio no se pudo iniciar |
El puerto 5432 está ocupado por otra aplicación. | Cambiá el puerto en postgresql.conf o detén el servicio conflicting. |
5. Mantenimiento
- Actualizar el servidor: Usá el gestor de paquetes (
apt upgrade postgresql,yum update postgresql-server) o actualizá la imagen de Docker (docker pull postgres:14). - Review de logs: Los registros están en
/var/log/postgresql/(Linux),/usr/local/var/log/postgresql.log(macOS) o%programdata%\postgresql\log(Windows).
Conclusión
Instalar PostgreSQL en cualquier sistema operativo es un proceso directo si seguís los pasos correctos. Ya seas un desarrollador que necesita un rápido entorno local, un administrador de sistemas configurando un servidor de producción, o alguien que prefiere un contenedor Docker portátil, tenés ahora un conjunto completo de instrucciones con los comandos exactos y las salidas esperadas que podés copiar y pegar.
Recordá que la seguridad es un proceso continuo: cambiá las contraseñas, configurá pg_hba.conf y hacé respaldos regulares. Una vez que el servidor esté corriendo, podés profundizar en ajustes de rendimiento, replicación o herramientas como pgAdmin.
Con PostgreSQL instalado, estás listo para diseñar esquemas robustos, escribir consultas eficientes y construir aplicaciones escalables. ¡ Feliz programación !
Próximos pasos
- Explorá pgAdmin: Instalá la interfaz gráfica para administrar bases de datos sin usar la terminal.
- Ajusta
postgresql.conf: Aprendé a cambiarshared_buffers,work_memymax_connectionssegún tus necesidades. - Configurá la replicación: Usá
pg_basebackupyStandbypara crear un servidor de respaldo. - Leé la documentación oficial: https://www.postgresql.org/docs/14/
Ahora tenés todo lo necesario para integrar PostgreSQL en cualquier entorno. ¡A empezar a crear bases de datos!
Referencias
- Documentación de PostgreSQL – https://www.postgresql.org/docs/14/
- Documentación de Homebrew – https://brew.sh/
- Documentación de Docker – https://docs.docker.com/get-started/
DUGLAS MORENO
Comentarios (0)
Sé el primero en comentar.