Curso de servidores linux

¿Qué es PostgreSQL?

📌 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.

¿Cómo funciona PostgreSQL en Linux?

Cuando instalas PostgreSQL:

  1. Se instala el servidor (motor de base de datos).

  2. Se crea un usuario del sistema llamado postgres.

  3. Se crea un servicio que:

    • Se inicia automáticamente.
    • Escucha por defecto en el puerto 5432.

PASO 1 — Actualizar el sistema

1sudo apt update

🔎 ¿Qué hace?

  • apt update → Actualiza la lista de paquetes.
  • apt upgrade → Instala actualizaciones pendientes.

PASO 2 — Instalar PostgreSQL

1sudo apt install postgresql postgresql-contrib -y

📌 Explicación:

  • postgresql → servidor principal.
  • postgresql-contrib → herramientas extra (extensiones útiles).

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

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.

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=#

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

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

PASO 8 — Permitir conexiones externas (IMPORTANTE PARA CLASE)

Por defecto PostgreSQL solo acepta localhost.

Editar configuración:

1sudo nano /etc/postgresql/*/main/postgresql.conf

Buscar:

#listen_addresses = 'localhost'

Cambiar a:

listen_addresses = '*'

Guardar.


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

PASO 9 — Abrir puerto en firewall (si usas ufw)

1sudo ufw allow 5432/tcp

PASO 10 — Probar conexión remota

Desde otra máquina:

1psql -h IP_DEL_SERVIDOR -U angel -d empresa

Dónde están los archivos importantes

Configuración:

/etc/postgresql/

Datos:

/var/lib/postgresql/

Logs:

/var/log/postgresql/

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