PostgreSQL y Ubuntu 22.04

Nuevo tutorial PostgreSQL en Ubuntu 22.04 – Guía útil para instalar, configurar y usar

PostgreSQL es uno de los sistemas de gestión de bases de datos más robustos y avanzados que existen, conocido por su estabilidad y flexibilidad. Además, cuenta con soporte disponible por parte de una comunidad activa y alternativas comerciales para el ámbito empresarial. Si estás administrando un servidor o trabajando en un proyecto que requiere un manejo eficiente de datos, aprender a instalar y configurar PostgreSQL es una habilidad esencial. En esta guía, explicaremos paso a paso el proceso de instalación, configuración y uso de PostgreSQL en un cloud server Ubuntu 22.04 para ayudarte en ese objetivo.

PostgreSQL obtuvo el primer puesto dentro de la categoría bases de datos en la encuesta para desarrolladores que Stackoverflow llevó a cabo en 2024.

Requisitos Previos

Paso 1: Instalación de PostgreSQL en Ubuntu 22.04

Para comenzar, asegúrate de que el índice de paquetes y todo el software actual del cloud server estén actualizados:

sudo apt update -y && sudo apt upgrade -y

Instala PostgreSQL y el cliente que permitirá la conexión a la base de datos desde la línea de comandos, junto con el conjunto de herramientas y extensiones adicionales postgresql-contrib:

sudo apt install postgresql postgresql-contrib postgresql-client -y

Verifica que el servicio esté corriendo. En caso de no estar activo, puedes iniciarlo con el segundo comando que aparece en el bloque de abajo. Asimismo, el último de ellos te permitirá garantizar el inicio de PostgreSQL cada vez que se reinicie el cloud server.

sudo systemctl status postgresql
# Solamente si necesitas iniciar el servicio manualmente:
sudo systemctl start postgresql
# Para habilitar el inicio automático:
sudo systemctl enable postgresql
instalar configurar usar postgresql ubuntu 22.04 1
Nuevo tutorial PostgreSQL en Ubuntu 22.04 - Guía útil para instalar, configurar y usar

La imagen anterior indica que el RDBMS (sistema de gestión de bases de datos relacionales, por sus siglas en inglés) inició hace 2 minutos y 40 segundos con un identificador de proceso 26408. Estos valores diferirán en tu caso y solamente los señalamos a modo informativo.

Paso 2: Configuración de PostgreSQL en Ubuntu 22.04

Este paso consta de dos actividades separadas pero que contribuyen al mismo propósito: alcanzar el grado mínimo de seguridad para la operación de PostgreSQL en producción.

Seguridad a Nivel del Sistema Operativo

Los archivos de configuración del gestor de bases de datos (postgresql.conf y pg_hba.conf) están ubicados en /etc/postgresql/<número de versión/main/ donde número de versión es 14 para la instalación en Ubuntu 22.04 que acabamos de realizar. El primero de ellos tiene que ver con cuestiones generales del servidor (como parámetros de red y conexión, rendimiento, registro o logging, seguridad y recuperación en caso de fallo). Por otro lado, el segundo se utiliza exclusivamente para configurar el acceso y los métodos de autenticación (quién, cómo, y desde dónde puede conectarse al servidor).

Con los comandos siguientes nos aseguraremos de que los archivos de configuración solamente queden accesibles para el usuario del sistema operativo llamado postgres y tengan permisos restringidos:

sudo chmod 600 /etc/postgresql/14/main/postgresql.conf
sudo chmod 600 /etc/postgresql/14/main/pg_hba.conf
instalar configurar usar postgresql ubuntu 22.04 2
Nuevo tutorial PostgreSQL en Ubuntu 22.04 - Guía útil para instalar, configurar y usar

Si no necesitas que PostgreSQL esté accesible desde la red externa, puedes configurarlo para que solamente acepte conexiones locales. Edita postgresql.conf y asegúrate de que la configuración listen_addresses esté definida como localhost:

sudo nano /etc/postgresql/14/main/postgresql.conf

Busca la línea y habilítala quitando el # del comienzo:

listen_addresses = 'localhost'

Para aumentar la protección contra ataques por fuerza bruta, configurar scram-sha-256 como método de autenticación es una excelente idea. El mismo utiliza el algoritmo SHA-256, que pertenece a la familia SHA-2, diseñada para ser resistente a ataques de colisión y otras vulnerabilidades comunes. En el mismo archivo de configuración, localizar la línea que comienza con password_encryption, descomentarla y colocar scram-sha-256 como valor:

password_encryption = scram-sha-256

A continuación, en pg_hba.conf habilitaremos la autenticación por contraseña para conexiones locales y requeriremos lo mismo para una dirección IP específica de forma remota. Todos los demás intentos de conexión serán denegados.

Luego de abrir el archivo en modo de edición:

sudo nano /etc/postgresql/14/main/pg_hba.conf

localiza las siguientes líneas y descomenta o coloca los valores que se indican debajo:

# Conexión local autenticada con contraseña
local   all             all                                     scram-sha-256
# Conexión remota autenticada con contraseña (ajustar IP según sea necesario)
host    all             all             192.168.1.0/24          scram-sha-256
# Denegar cualquier otra conexión
host    all             all             all                     reject

Para finalizar, recarga la configuración:

sudo systemctl reload postgresql

Esta alternativa es preferible a reiniciar el servicio en su totalidad cuando existen conexiones activas y no deseamos interrumpirlas. Aunque ese no es el caso en este ejemplo, es una buena idea adquirir el hábito de hacerlo.

Seguridad a Nivel del RDBMS

Durante la instalación, PostgreSQL crea un usuario del sistema operativo llamado postgres. Cambia a dicho usuario y luego accede al shell del RDBMS:

sudo -i -u postgres
psql

En primer lugar, cambiemos la contraseña del usuario postgres de la base de datos. Escribe la siguiente sentencia SQL y presiona Enter. Recuerda reemplazar tu_nueva_contraseña_segura por una de tu elección:

ALTER USER postgres WITH PASSWORD 'tu_nueva_contraseña_segura';

Por seguridad y organización, es recomendable no usar el usuario postgres para todo. De hecho, lo mejor es crear un nuevo usuario para cada aplicación que necesite acceder a las distintas base de datos. Emplearemos las siguientes líneas para 1) generar el usuario appuser con contraseña AppUs3r, 2) crear una base de datos llamada appdb, y 3) dar todos los privilegios de acceso para que appuser acceda a appdb:

CREATE USER appuser WITH PASSWORD 'AppUs3r';
CREATE DATABASE appdb OWNER appuser;
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
instalar configurar usar postgresql ubuntu 22.04 3
Nuevo tutorial PostgreSQL en Ubuntu 22.04 - Guía útil para instalar, configurar y usar

En la imagen de arriba se aprecia que luego de cada sentencia de la base de datos, PostgreSQL devuelve una confirmación (CREATE ROLE, CREATE DATABASE, y GRANT) indicando que la operación fue exitosa. Para salir del shell del RDBMS, escribimos exit y luego repetimos para regresar a la línea de comandos del usuario gabriel.

Para asegurarnos de que la configuración funcione, conectémonos con el usuario que acabamos de crear:

psql -h localhost -U appuser -d appdb
instalar configurar usar postgresql ubuntu 22.04 4
Nuevo tutorial PostgreSQL en Ubuntu 22.04 - Guía útil para instalar, configurar y usar

Si como resultado podemos ver el nombre de la base de datos como mostramos arriba, hemos confirmado que la configuración quedó como esperábamos. Para salir del prompt, escribiremos \q seguido por Enter.

Conclusión

En esta guía, hemos cubierto los pasos necesarios para instalar, configurar y usar PostgreSQL en un servidor Ubuntu 22.04. Ahora tienes los conocimientos para administrar tu propio servidor PostgreSQL de manera eficiente y segura.

Gabriel Cánepa
Gabriel Cánepa

Gabriel trabaja actualmente como desarrollador full-stack en Scalar, una firma que se dedica a hacer valuaciones de empresas. Es Administrador de Sistemas certificado por la Fundación Linux y previamente ha escrito un gran número de artículos y contenidos técnicos sobre el tema para: DigitalOcean, Linode, Carrera Linux Argentina y Tecmint.

Tiene una certificación en programación de la Universidad de Brigham Young-Idaho, y está completando las carreras de programador y analista de sistemas en la Universidad Nacional de Villa Mercedes (UNViMe).

En su tiempo libre, Gabriel disfruta leyendo libros de Stephen R. Covey, tocando piano y guitarra, y enseñando conocimientos de programación a su dos hijas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


El periodo de verificación de reCAPTCHA ha caducado. Por favor, recarga la página.