El servicio de MySQL es una de las ventajas de poseer un sistema operativo corriendo alguna distribución de Linux. En nuestro caso estamos utilizando Linino (una distribución de OpenWRT) u OpenWRT-Yun. La distribución de Linux que estemos utilizando en el Yún depende más que todo de qué empresa de la cual fue adquirido (aunque es posible instalarle Linino a la versión de Arduino LLC). Esto se debe a la batalla legal por el control de la marca Arduino, la cual ha causado que se produzca este tipo de discrepancias.
Anteriormente se ha escrito en este blog sobre cómo instalar SQLite en el Yún (Ver: Base de datos SQLite en el Arduino Yún). Ambos sistemas de base de datos tienen ventajas y desventajas. La principal diferencia es que MySQL es un servicio y SQLite es una librería.
Con MySQL es posible gestionar múltiples usuarios, los cuales pueden tener diferentes privilegios. Esto no es posible a través de SQLite debido a que esta librería funciona bloqueando el acceso al archivo de base de datos mientras algún proceso lo requiera (esto impide pueden gestionar dos o más peticiones al mismo tiempo).
La ventaja que posee SQLite recae en su nombre. SQLite es bastante liviano, rápido y sencillo de utilizar. Es el preferido para dispositivos de bajos recursos y que tengan pocas peticiones por segundo. MySQL requiere de la utilización de un servidor, desde el cual se gestiona todo lo relacionado a la(s) bases(s) de datos.
Como ya sabemos, el Arduino Yún es un dispositivo que integra un Arduino Leonardo y un Procesador Atheros AR9331, en el cual tenemos disponible la distribución de Linux que ya mencionamos. A continuación describiremos los pasos a seguir para la instalación del servidor MySQL en el Arduino Yún.
Paso #1: Ampliar la memoria flash del Yún.
Lo primero que debemos hacer es expandir la memoria interna para instalar programas de nuestro Arduino. Esto se ha escrito anteriormente en esta página: Expandir la memoria del Arduino Yún con una MicroSD.
Paso #2: Instalar el servicio MySQL
Para este paso necesitamos acceder a la terminal de OpenWRT de nuestro Yún. Esto lo podemos completar utilizando SSH. Una vez estemos debemos introducir los siguientes comandos:
Instalación del servicio
1 2 |
opkg update opkg install mysql-server |
Instalación de los directorios
1 2 |
mkdir -p /mnt/data/mysql mkdir -p /mnt/data/tmp |
Forzar la instalación de la base de datos
1 2 |
mysql_install_db --force /usr/bin/mysqld --skip-grant-tables --skip-networking & |
Crear el usuario root
En la consola utilizamos el comando:
1 |
mysql -u root |
Luego elegimos la base de datos
1 |
use mysql; |
Se limpian los privilegios actuales y se crea el usuario root.
1 2 3 4 5 6 7 8 |
FLUSH PRIVILEGES; INSERT into user (Host, User,Password) values ('localhost','root',' '); UPDATE user SET Password=PASSWORD('arduinoYun') WHERE User='root'; UPDATE user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y' where user='root'; FLUSH PRIVILEGES; |
Iniciar el servicio
1 |
/etc/init.d/mysqld start |
Con esto tendremos el usuario root con la contraseña «arduinoYun». Podemos asignarle la contraseña que deseemos. La próxima ves que deseemos entrar a la consola de MySQL debemos agregarle el parámetro -p :
1 |
mysql -u root -p |
Donde luego se nos pedirá introducir la contraseña. En nuestro caso es «arduinoYun».
Opcional: Instalar librería de PHP
Abrimos la terminal nuevamente y ejecutamos el siguiente comando:
1 2 |
opkg update opkg install php5-mod-mysqli |
Anteriormente se utilizaba la librería php5-mod-mysql en ves de php5-mod-mysqli. La última tiene mejoras en términos de seguridad y de rendimiento con respecto a la primera.
Paso #3: Crear nuestra primera base de datos
Es hora de probar el MySQL Server que hemos instalado.
Crear la base de datos
1 |
CREATE DATABASE panamahitek; |
Seleccionar la base de datos
1 |
use panamahitek; |
Crear nuestra primera tabla y columnas
1 2 3 |
CREATE TABLE prueba (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, nombre VARCHAR(32), fecha INT); |
Esto nos creará una tabla llamada prueba, con 3 campos: id (ya que se necesita un indice), nombre y fecha. Note que la fecha es un entero, lo cual es muy utilizado para guardar fechas basadas en los segundos transcurridos desde el primero de enero de 1970.
Ver la información de nuestra tabla creada
1 |
describe prueba; |
Si todo sale bien, nos debe aparecer lo siguiente.
Podemos borrar la tabla creada anteriormente utilizando el siguiente comando:
1 |
DROP TABLE prueba; |
También podemos borrar la base de datos:
1 |
DROP DATABASE panamahitek; |
Utilizar MySQL es un poco más complejo que SQLite, pero representa una mejora en ciertos ambientes. Está en nosotros el discernir las situaciones en las cuales resulta ventajoso la utilización de una u otra opción. Esperamos que la información presentada sea de utilidad para ustedes.
Saludos.