MariaDB en Debian 12: Guía de Acceso Remoto y Organización por Proyectos

Configurar el acceso remoto a una base de datos es un paso fundamental cuando pasamos de trabajar en localhost a gestionar un servidor de desarrollo centralizado, como nuestro entorno en Talay Lab.

Aunque es tentador (y rápido) habilitar el acceso total para empezar a trabajar de inmediato, en este artículo quiero compartir contigo una metodología de trabajo que, tras muchas pruebas, ha resultado ser la más eficiente para mi día a día: la segmentación de usuarios por proyecto.

El objetivo no es solo la seguridad, sino la organización. Al separar permisos, evitamos esos errores humanos tan comunes, como modificar la configuración de un proyecto A pensando que estábamos en el B.

A continuación, veremos cómo configurar MariaDB en Debian 12 para aceptar conexiones externas y cómo estructurar tus usuarios para un flujo de trabajo limpio y profesional.

1. Instalación y configuración inicial

Si partes de una instalación limpia en Debian 12 (Bookworm), el primer paso es asegurar que tenemos el servicio corriendo y con una configuración base saneada.

Bash

sudo apt update
sudo apt install mariadb-server

Una vez instalado, es muy recomendable ejecutar el asistente de seguridad que incluye MariaDB. Este script nos ayuda a eliminar bases de datos de prueba y usuarios anónimos que no vamos a necesitar.

Bash

sudo mysql_secure_installation

Nota práctica: En las versiones modernas de MariaDB en Debian, la autenticación de root se gestiona vía unix_socket. Esto significa que si tienes acceso sudo en la terminal, puedes entrar sin contraseña. Es un comportamiento esperado y cómodo para la gestión local.

2. Habilitar el acceso externo (Bind-Address)

Por defecto, MariaDB está configurado para «escuchar» únicamente las peticiones que vienen desde el propio servidor (127.0.0.1). Para conectar desde herramientas externas como DBeaver o HeidiSQL, necesitamos ampliar este rango.

En Debian 12, la configuración específica suele encontrarse en este directorio. Vamos a editar el archivo:

Bash

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Localiza la línea bind-address y modifícala para que el servicio atienda peticiones de todas las interfaces de red disponibles:

Ini, TOML

bind-address = 0.0.0.0

Guardamos los cambios (Ctrl+O y Ctrl+X) y reiniciamos el servicio para aplicar la nueva configuración:

Bash

sudo systemctl restart mariadb

3. Estrategia de Trabajo: Un Proyecto, Un Usuario

Aquí es donde definimos nuestro flujo de trabajo. En lugar de habilitar al usuario root para conectarse desde cualquier lugar, mi recomendación es mantener root exclusivamente para tareas administrativas locales (crear bases de datos y usuarios).

Para el desarrollo diario, crearemos un usuario específico para cada proyecto. Esto tiene dos grandes ventajas:

  1. Aislamiento: Si un script o una configuración falla, el daño se limita a esa base de datos.
  2. Claridad: Sabes exactamente con qué credenciales está operando cada aplicación.

Pasos para crear un usuario dedicado

Accedemos a la consola de MariaDB desde el servidor:

Bash

sudo mysql -u root

Supongamos que estamos preparando el entorno para un proyecto llamado w12. Ejecutaremos los siguientes comandos SQL:

SQL

-- 1. Crear la base de datos del proyecto
CREATE DATABASE w12_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 2. Crear el usuario con acceso remoto (%)
-- El símbolo '%' permite la conexión desde cualquier IP externa
CREATE USER 'usuario_w12'@'%' IDENTIFIED BY 'tu_contraseña_segura';

-- 3. Asignar permisos EXCLUSIVOS para su base de datos
GRANT ALL PRIVILEGES ON w12_db.* TO 'usuario_w12'@'%';

-- 4. Refrescar permisos
FLUSH PRIVILEGES;

Con esta configuración, usuario_w12 tiene control total sobre w12_db, pero no puede ver ni alterar las bases de datos de otros proyectos.

4. Configuración del Firewall (UFW)

Al haber permitido conexiones desde 0.0.0.0 en MariaDB, es importante gestionar quién tiene permiso para llamar a esa puerta. Usaremos UFW, el firewall estándar en Debian, para controlar el acceso al puerto 3306.

Para permitir el tráfico en tu red local:

Bash

sudo ufw allow 3306/tcp
sudo ufw reload

Si deseas ser más específico y permitir solo la conexión desde tu equipo de trabajo (por ejemplo, si tu IP es 192.168.1.35), puedes usar este comando:

Bash

sudo ufw allow from 192.168.1.35 to any port 3306

5. Verificación de la conexión

Para finalizar, vamos a comprobar que todo funciona correctamente. Desde tu ordenador, abre tu gestor de base de datos preferido e introduce los datos de conexión:

  • Host: La IP de tu servidor (ej. 192.168.1.50).
  • Usuario: usuario_w12 (el que acabamos de crear).
  • Contraseña: La que definiste en el paso 3.
  • Puerto: 3306.

Si la conexión es exitosa, verás que tienes acceso únicamente a la base de datos w12_db. Ahora tienes un entorno listo para desarrollar, limpio y bien organizado.

Deja un comentario

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

Información básica sobre protección de datos Ver más

  • Responsable: Francisco Crespo.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento: No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Hostinger que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.