Servidor de Bases de Datos PostgreSQL
1. Qué es PostgreSQL? #
2. PostgreSQL #
- Un SGBD relacional (Sistema de Gestión de Bases de Datos).
- Open Source.
- Muy potente y profesional.
- Compatible con SQL estándar.
- Soporta JSON, funciones, triggers, índices avanzados, etc.
Es ideal para:
- Backends con Node, Spring Boot, Django…
- Proyectos educativos.
- Producción real.
3. Cómo funciona PostgreSQL en Linux? #
Cuando instalas PostgreSQL:
-
Se instala el servidor (motor de base de datos).
-
Se crea un usuario del sistema llamado
postgres. -
Se crea un servicio que:
- Se inicia automáticamente.
- Escucha por defecto en el puerto 5432.
4. PASO 1 - Actualizar el sistema #
1sudo apt update
🔎 ¿Qué hace?
apt update→ Actualiza la lista de paquetes.apt upgrade→ Instala actualizaciones pendientes.
5. PASO 2 - Instalar PostgreSQL #
1sudo apt install postgresql postgresql-contrib -y
📌 Explicación:
postgresql→ servidor principal.postgresql-contrib→ herramientas extra (extensiones útiles).
6. PASO 3 - Comprobar que el servicio está activo #
1sudo systemctl status postgresql
Debe aparecer:
active (running)
Si no está activo:
1sudo systemctl start postgresql
Para activarlo al arranque:
1sudo systemctl enable postgresql
7. PASO 4 - Verificar que escucha en el puerto 5432 #
1sudo ss -tulpn | grep 5432
Deberías ver algo como:
LISTEN 0 128 127.0.0.1:5432
📌 Esto significa que:
- Está escuchando en localhost.
- Solo acepta conexiones locales.
8. PASO 5 - Entrar a PostgreSQL #
PostgreSQL usa autenticación por usuario del sistema.
Cambiamos al usuario postgres:
1sudo -i -u postgres
Ahora estamos dentro como usuario postgres.
Entramos al gestor:
1psql
Si todo va bien verás:
postgres=#
9. PASO 6 - Comandos básicos en psql #
Ver bases de datos:
1\l
Crear base de datos:
1CREATE DATABASE prueba;
Ver tablas:
1\dt
Salir:
1\q
Salir del usuario postgres:
1exit
10. PASO 7 - Crear usuario y asignar base #
Entramos otra vez:
1sudo -i -u postgres 2psql
Crear usuario:
1CREATE USER angel WITH PASSWORD '1234';
Crear base:
1CREATE DATABASE empresa;
Dar permisos:
1GRANT ALL PRIVILEGES ON DATABASE empresa TO angel;
Salir:
1\q 2exit
11. PASO 8 - Permitir conexiones externas (IMPORTANTE PARA CLASE) #
Por defecto PostgreSQL solo acepta localhost.
12. Editar configuración: #
1sudo nano /etc/postgresql/*/main/postgresql.conf
Buscar:
#listen_addresses = 'localhost'
Cambiar a:
listen_addresses = '*'
Guardar.
13. Editar control de acceso: #
1sudo nano /etc/postgresql/*/main/pg_hba.conf
Añadir al final:
host all all 0.0.0.0/0 md5
Reiniciar servicio:
1sudo systemctl restart postgresql
14. PASO 9 - Abrir puerto en firewall (si usas ufw) #
1sudo ufw allow 5432/tcp
15. PASO 10 - Probar conexión remota #
Desde otra máquina:
1psql -h IP_DEL_SERVIDOR -U angel -d empresa
16. Dónde están los archivos importantes #
Configuración:
/etc/postgresql/
Datos:
/var/lib/postgresql/
Logs:
/var/log/postgresql/
17. Paso 11: Opcional: Configurar el firewall #
Ver si el firewall está activo #
Primero comprobamos el estado:
1sudo ufw status
Puede salir:
Status: inactive
Status: active
Abrir el puerto de PostgreSQL #
Si PostgreSQL está en el puerto 5432:
1sudo ufw allow 5432/tcp
Ahora activamos: #
1sudo ufw enable
Mejor práctica (NO abrir a todo el mundo) #
Si quieres permitir solo a una IP concreta, ej 192.168.1.50:
1sudo ufw allow from 192.168.1.50 to any port 5432 proto tcp
Resumen del tema
Conceptos clave #
- Servidor RDBMS PostgreSQL: gestor de bases de datos relacional y extensible que escucha por defecto en el puerto
5432/tcp. - Autenticación Peer e Interactiva: ingreso al usuario del sistema
postgresconsudo -i -u postgresy ejecución de la CLIpsql. - Meta-comandos Básicos de
psql:\l(listar bases de datos),\c db(conectar a base de datos),\dt(listar tablas) y\q(salir). - Habilitación de Acceso Remoto:
postgresql.conf: configurarlisten_addresses = '*'.pg_hba.conf: agregar regla de autenticaciónhost all all 0.0.0.0/0 scram-sha-256omd5.
- Seguridad en Cortafuegos: restringir la entrada al puerto 5432 solo a las IPs de los servidores de backend mediante
ufw.
Qué debes recordar #
PostgreSQL opera en el puerto 5432 bajo el usuario postgres; requiere configurar listen_addresses y pg_hba.conf para habilitar conexiones remotas autenticadas.