¿Puede Raspberry Pi ejecutar SQL?

Bases de Datos en tu Raspberry Pi

Valoración: 4.75 (9646 votos)

La Raspberry Pi se ha ganado un lugar especial en el corazón de desarrolladores, ingenieros de DevOps, administradores de bases de datos y entusiastas de la tecnología por igual. Este mini-ordenador de placa única, del tamaño de una tarjeta de crédito, ofrece una plataforma increíblemente asequible para aprender, experimentar y emular entornos del mundo real. Si bien es conocida por enseñar programación o construir proyectos electrónicos, su capacidad para ejecutar un sistema operativo Linux completo la convierte en una candidata ideal para tareas de servidor, incluidas las bases de datos.

En un mundo donde las aplicaciones distribuidas en la nube requieren habilidades en redes, seguridad y gestión de infraestructura, tener un dispositivo físico que emule estos entornos es invaluable. Una Raspberry Pi puede sentirse sorprendentemente similar a una instancia pequeña en la nube. Considera esta comparación básica:

CaracterísticaInstancia Amazon t2.nano EC2Raspberry Pi Zero 2 W
Memoria536 MB512 MB
CPUs1 vCPU4 núcleos
Velocidad de reloj3 GHz1 GHz
Arquitectura CPUx86ARM

Esta capacidad la hace perfecta para casos de uso específicos, como configurar un servidor de bases de datos portátil al que puedas conectarte a través de WiFi o USB. Este artículo explora cómo lograrlo, centrándose en las opciones de bases de datos más adecuadas para este hardware de recursos limitados y proporcionando guías detalladas.

Índice de Contenido

¿Qué Bases de Datos son Mejores para Raspberry Pi?

Dada la naturaleza de la Raspberry Pi, que a menudo opera con recursos limitados (especialmente en modelos como la Zero), la elección de la base de datos es crucial. Durante las experimentaciones, se ha encontrado que SQLite, TinyDB y MariaDB son excelentes opciones. Estas bases de datos son compatibles con la arquitectura ARM de la Raspberry Pi y, lo que es más importante, consumen pocos recursos de CPU y memoria. También ofrecen soporte para una amplia variedad de lenguajes de programación y herramientas, lo que las hace versátiles para proyectos de desarrollo y aplicaciones IoT.

Otras opciones populares en el mundo Linux, como MySQL y PostgreSQL, también pueden funcionar en Raspberry Pi, aunque podrían requerir modelos con más recursos (como la Raspberry Pi 4 con más RAM) para cargas de trabajo más intensas.

Incluso es posible ejecutar una versión de SQL Server en Raspberry Pi, gracias a Azure SQL Edge. Esta versión está optimizada para despliegues en el 'edge' (dispositivos IoT) y es compatible con hardware ARM, lo que la hace viable en la Pi utilizando Docker.

Configurando MariaDB Directamente en Raspberry Pi OS

Una de las formas más directas de tener una base de datos relacional en tu Raspberry Pi es instalar MariaDB Server directamente sobre el sistema operativo. Este enfoque es sencillo y eficiente para muchos casos de uso. Usaremos Raspberry Pi OS Lite (la versión sin entorno gráfico) para maximizar los recursos disponibles para la base de datos.

Preparación de la Tarjeta MicroSD

Necesitas instalar el sistema operativo en una tarjeta microSD. Una tarjeta rápida mejorará significativamente el rendimiento.

1. En tu ordenador de trabajo, descarga e instala el software Raspberry Pi Imager.
2. Inserta la tarjeta microSD en tu ordenador.
3. Abre Raspberry Pi Imager y selecciona el sistema operativo. Es recomendable elegir 'Raspberry Pi OS Lite (64-bit)' si tu Pi lo soporta, o la versión de 32 bits si no.
4. Elige tu tarjeta microSD como dispositivo de almacenamiento.
5. Haz clic en el icono de configuración (engranaje) y configura:
- Hostname (ej: raspi01)
- Habilitar SSH: Marca esta opción y selecciona autenticación por contraseña.
- Configurar usuario y contraseña: Define un usuario y contraseña para el sistema operativo.
- Configurar red inalámbrica: Introduce los datos de tu red WiFi de 2.4Ghz.
6. Guarda la configuración y haz clic en ESCRIBIR. Confirma para formatear la tarjeta.
7. Una vez terminado, retira la tarjeta e insértala en tu Raspberry Pi.

Primer Arranque y Conexión SSH

Conecta la Raspberry Pi a una fuente de alimentación USB (usa el puerto micro USB más a la derecha en la Zero 2 W, o el USB-C en modelos como la Pi 4). El mini-ordenador arrancará. Sé paciente, el primer arranque puede tardar varios minutos.

Cuando creas que ha arrancado y se ha conectado a la red (puedes guiarte por los LEDs), abre una terminal en tu ordenador y conéctate vía SSH. Asegúrate de que tu ordenador esté en la misma red local.

ssh [email protected]

Sustituye 'usuario' y 'hostname' por los que configuraste. Acepta la clave del host si te lo pide e introduce tu contraseña.

Una vez conectado, actualiza el sistema:

sudo apt update
sudo apt upgrade -y

Instalación de MariaDB Server

Con el sistema actualizado, instalar MariaDB es muy sencillo:

sudo apt install mariadb-server -y

El cliente de línea de comandos de MariaDB se instala junto con el servidor. Puedes verificar que funciona conectándote localmente:

sudo mariadb

Dentro del cliente, puedes probar comandos SQL básicos o crear una base de datos y un usuario para acceso remoto (es una buena práctica no usar el usuario root para aplicaciones).

CREATE DATABASE nombrebd;
CREATE USER 'usuario'@'%' IDENTIFIED BY 'tu
contraseñasegura';
GRANT ALL PRIVILEGES ON nombre
bd.* TO 'usuario'@'%';
FLUSH PRIVILEGES;
quit

Asegurando el Servidor de Base de Datos

MariaDB incluye una herramienta para mejorar la seguridad por defecto:

sudo mariadb-secure-installation

Sigue las indicaciones. Por defecto, el password de root inicial está vacío (solo presiona Enter). Responde 'Y' o 'n' a las preguntas para configurar un password de root, eliminar usuarios anónimos, deshabilitar el login remoto de root y eliminar la base de datos 'test'.

Habilitando Acceso Remoto

Para conectar desde tu ordenador, necesitas permitir conexiones no locales. Edita el archivo de configuración de MariaDB:

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

Busca la línea que dice bind-address = 127.0.0.1 y coméntala añadiendo un '#' al principio:

#bind-address = 127.0.0.1

Guarda los cambios (Ctrl+X, Y, Enter) y sal del editor.

Ahora puedes salir de la sesión SSH:

exit

Desde tu ordenador, si tienes un cliente MariaDB o MySQL instalado, puedes probar la conexión remota:

mariadb -h hostname.local -u usuario -p

Introduce la contraseña del usuario que creaste.

Configurando MariaDB en Raspberry Pi con Docker

Otra excelente opción es usar Docker para ejecutar MariaDB. Docker proporciona aislamiento, facilita la gestión de dependencias y permite un despliegue consistente. El rendimiento de Docker en Raspberry Pi es sorprendentemente bueno.

Instalación de Docker

Conéctate a tu Raspberry Pi vía SSH (si no lo estás ya). Instala Docker:

sudo apt install docker.io -y

Verifica que el servicio Docker esté corriendo:

sudo service docker status

Si el estado es 'active (running)', todo va bien. Si no, intenta reiniciar la Pi (sudo reboot).

Añade tu usuario al grupo 'docker' para no necesitar 'sudo' con cada comando Docker (cierra y vuelve a abrir la sesión SSH después):

sudo usermod -aG docker usuario

Ejecutando el Servidor MariaDB en Docker

Ahora, puedes desplegar MariaDB usando una imagen de Docker. La imagen oficial funciona bien en arquitecturas de 64 bits.

docker run --detach --net=host --name mariadb --restart unless-stopped --env MARIADBROOTPASSWORD='tucontraseñaroot' mariadb:latest

Expliquemos las banderas:
* --detach: Ejecuta el contenedor en segundo plano.
* --net=host: Usa la red del host, evitando mapeo explícito de puertos.
* --name mariadb: Asigna un nombre al contenedor.
* --restart unless-stopped: Inicia el contenedor automáticamente al arrancar la Pi.
* --env MARIADB_ROOT_PASSWORD: Establece la contraseña para el usuario root (¡usa una segura!).
* mariadb:latest: Especifica la imagen y etiqueta a usar.

Verifica que el contenedor esté corriendo:

docker container ls

Deberías ver tu contenedor 'mariadb' listado con estado 'Up'.

Puedes acceder a la línea de comandos de MariaDB dentro del contenedor para pruebas:

docker exec -it mariadb bash
mariadb -u root -p

Introduce la contraseña de root que definiste. Puedes ejecutar comandos SQL. Para salir, escribe 'quit' en el cliente SQL y luego 'exit' en el shell del contenedor.

Para una configuración más segura o específica (como crear un usuario y base de datos al inicio), puedes detener y eliminar el contenedor existente y crear uno nuevo con más variables de entorno:

docker stop mariadb
docker container rm --volumes mariadb
docker run --detach --net=host --name mariadb --restart unless-stopped --env MARIADBROOTPASSWORD='rootpassword' --env MARIADBROOTHOST='localhost' --env MARIADBDATABASE='nombrebd' --env MARIADBUSER='usuario' --env MARIADBPASSWORD='userpassword' mariadb:latest

Este comando crea una base de datos ('nombrebd') y un usuario ('usuario') con acceso a ella, y restringe el acceso de root a 'localhost'.

Explorando Azure SQL Edge (SQL Server)

Para quienes necesitan compatibilidad con SQL Server, Azure SQL Edge es la respuesta en Raspberry Pi. Está basado en el motor de SQL Server pero optimizado para despliegues en dispositivos IoT con arquitecturas ARM (y x86). Se despliega típicamente usando Docker.

Asegúrate de tener Docker instalado y funcionando.

1. Descarga la imagen del contenedor:

sudo docker pull mcr.microsoft.com/azure-sql-edge:latest

2. Ejecuta el contenedor. Necesitas aceptar el EULA y establecer una contraseña para el usuario SA.

Para la edición Developer (con límites de recursos):

sudo docker run --cap-add SYS

PTRACE -e 'ACCEPTEULA=1' -e 'MSSQLSAPASSWORD='TuContraseñaSegura!'' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
Para la edición Premium (con límites de recursos mayores, requiere licencia):

sudo docker run --cap-add SYS

PTRACE -e 'ACCEPTEULA=1' -e 'MSSQLSAPASSWORD='TuContraseñaSegura!'' -e 'MSSQLPID=Premium' -p 1433:1433 --name azuresqledge -d mcr.microsoft.com/azure-sql-edge
Verifica el estado con sudo docker ps -a. Si el estado es 'Up', está corriendo.

Puedes conectar usando la herramienta sqlcmd dentro del contenedor:

sudo docker exec -it azuresqledge bash
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "TuContraseñaSegura!"

Conexión Remota con DBeaver

Usar un cliente gráfico como DBeaver facilita mucho la interacción con la base de datos. Es gratuito y soporta múltiples tipos de bases de datos, incluyendo MariaDB y MySQL.

1. Descarga e instala DBeaver en tu ordenador de trabajo.
2. Abre DBeaver y crea una nueva conexión a base de datos (menú Database > New Database Connection).
3. Selecciona MariaDB (o MySQL si estás usando Azure SQL Edge, aunque Azure SQL Edge es más compatible con herramientas de SQL Server como Azure Data Studio o SSMS en Windows/macOS/Linux, DBeaver también puede funcionar).
4. Introduce los detalles de conexión: Host (el hostname o IP de tu Raspberry Pi, ej: raspi01.local), el puerto (el por defecto es 3306 para MariaDB/MySQL, 1433 para SQL Server), la base de datos (si creaste una específica), el usuario y la contraseña.
5. Haz clic en 'Test Connection...' para verificar que los detalles son correctos.
6. Si la prueba es exitosa, haz clic en Finish.

Ahora deberías ver la conexión en el 'Database Navigator' de DBeaver y poder explorar las bases de datos, tablas y ejecutar consultas SQL.

Importando una Base de Datos de Demostración

Para probar, puedes importar una base de datos de ejemplo. El sitio MariaDB Tutorial ofrece una base de datos 'nation' útil para practicar consultas.

1. Descarga el archivo ZIP con el script SQL (busca 'nation.sql' en el sitio de MariaDB Tutorial).
2. Extrae el archivo SQL.
3. En DBeaver, abre el archivo SQL (File > Open File...).
4. Asegúrate de que la conexión a tu Raspberry Pi esté seleccionada como la fuente de datos activa (hay un icono de base de datos en la barra de herramientas o puedes seleccionarla en el editor SQL).
5. Ejecuta el script SQL (menú SQL Editor > Execute SQL Script).

Una vez completado, tu base de datos 'nation' estará poblada y lista para ser consultada.

Habilitando USB Gadget Ethernet para Conexión Directa

Una característica muy útil, especialmente en modelos Zero, es la capacidad de emular una conexión de red a través del cable USB de alimentación. Esto te permite conectar tu Pi directamente a tu ordenador y acceder a ella sin depender de una red WiFi.

1. Conéctate a tu Pi vía SSH.
2. Edita el archivo de configuración de arranque:

sudo nano /boot/config.txt

3. Añade la siguiente línea al final del archivo:

dtoverlay=dwc2

Guarda y sal.
4. Edita el archivo de línea de comandos de arranque:

sudo nano /boot/cmdline.txt

5. Busca la parte que dice rootwait y añade modules-load=dwc2,g_ether después, separado por un espacio. Debería verse algo así (el contenido exacto varía, solo añade lo nuevo):

... rootwait modules-load=dwc2,g_ether ...

Guarda y sal.
6. Apaga la Raspberry Pi de forma segura:

sudo poweroff

Espera a que los LEDs se apaguen. Desconecta el cable USB y vuelve a conectarlo, pero esta vez al puerto USB que no es el de alimentación (el puerto de datos/OTG, normalmente el micro USB más a la izquierda en la Zero). Conecta el otro extremo a tu ordenador.

Tu ordenador debería detectar un nuevo dispositivo de red. Después de que la Pi arranque, podrás conectarte a ella vía SSH usando el hostname que configuraste, ¡incluso si no estás en una red WiFi!

Esto la convierte en un servidor de base de datos verdaderamente portátil y autónomo.

Preguntas Frecuentes

¿Puede una Raspberry Pi ejecutar un servidor SQL (SQL Server)?

Sí, puede. Aunque no puede ejecutar la versión completa de SQL Server diseñada para arquitecturas x86, sí puede ejecutar Azure SQL Edge, que está optimizado para dispositivos IoT y es compatible con la arquitectura ARM de la Raspberry Pi. Se instala típicamente usando Docker.

¿Cuál es la mejor base de datos SQL para Raspberry Pi?

Depende de tus necesidades. Para la mayoría de los proyectos pequeños, desarrollo o aprendizaje, SQLite, TinyDB o MariaDB (o MySQL) son excelentes opciones debido a su bajo consumo de recursos y facilidad de uso. Si necesitas compatibilidad con Microsoft SQL Server, la única opción viable en la Pi es Azure SQL Edge.

¿Puede una Raspberry Pi ejecutar un servidor MySQL?

Sí, absolutamente. MySQL es una opción muy popular y funciona bien en Raspberry Pi. La instalación es similar a la de MariaDB (ya que MariaDB es un fork de MySQL). Puedes instalarla directamente usando sudo apt install mysql-server o mediante Docker con la imagen oficial de MySQL.

¿Puedes alojar una base de datos en Raspberry Pi?

Sí, es uno de los usos interesantes que se le puede dar. Puedes instalar y alojar sistemas de bases de datos como MariaDB, MySQL, PostgreSQL, SQLite e incluso Azure SQL Edge directamente en la Raspberry Pi. Esto es útil para aplicaciones locales, proyectos IoT o entornos de desarrollo donde no necesitas una conexión a una base de datos en la nube.

Próximos Pasos

Con tu Raspberry Pi funcionando como servidor de bases de datos, las posibilidades son muchas. Puedes:

  • Experimentar con la base de datos de demostración, ejecutando consultas SQL complejas.
  • Desarrollar aplicaciones en tu lenguaje favorito (Python, Node.js, Java, C++, etc.) usando los conectores oficiales de MariaDB o MySQL para interactuar con tu base de datos en la Pi.
  • Explorar configuraciones más avanzadas, como la replicación básica si tienes otra Pi.
  • Considerar la posibilidad de crear un pequeño clúster con varias Pi para experimentar con bases de datos distribuidas (aunque esto es más complejo).
  • Integrar la base de datos en proyectos IoT para almacenar datos de sensores o gestionar dispositivos.

Conclusión

La Raspberry Pi es mucho más que un simple ordenador de escritorio de bajo costo; es una plataforma versátil para el aprendizaje y la experimentación. Configurar y alojar una base de datos en ella, ya sea MariaDB, SQLite, o incluso Azure SQL Edge, es un proyecto gratificante que te permite desarrollar habilidades valiosas en administración de sistemas y bases de datos en un entorno físico real. Ya sea para un proyecto personal, un entorno de desarrollo portátil o una aplicación IoT, tu Raspberry Pi está lista para convertirse en el corazón de tus datos. ¡Anímate a experimentar y a construir algo increíble!

Si quieres conocer otros artículos parecidos a Bases de Datos en tu Raspberry Pi puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir