MySQL, el desafío del primer cuatrimestre del 2020.

No se trata de sentirme el “todopoderoso” o el “sabelotodo” sino que creo debemos de cultivar e incentivar los retos y desafíos que plantean los alumnos cuando nos sugieren tal o cual tecnología para trabajar en clase.

En este caso, el desafío era para mi, ya que parece ser que en las materias pasadas ya habían usado este motor, mientras que en el otro grupo fue el ganador el poderoso Oracle.

Mis acercamientos con MySQL era referente a usarlo en combinación de php o bien con Joomla, y algunos ejemplos para conectar con .NET o con Java, pero nunca me había metido a mayor profundidad con el motor, además que para facilitar las cosas se instalaba el XAMPP.

Ahora teníamos que usar el IDE tan popular llamado MySQL Workbench, además que mi reto era instalar una versión más reciente de MySQL, y bueno como son fines educativos la versión de la “comunidad”.

Aquí la liga de descarga.

https://dev.mysql.com/downloads/mysql/5.5.html?os=3&version=5

Por lo que es una instalación normal de Windows e instala toda la suite sin ningún problema, la verdad lo use un par de veces y quedó en el olvido dicha instalación aunque no la desinstalé.

Ahora que se retomo el tema y que íbamos a usar en el cuatrimestre el motor de MySQL y por ende el Workbench, lo desempolvé y me dispuse a usarlo.

El nuevo motor no arrancó y debido a que en mi equipo tengo Oracle y SQL Server, pensé que iba a causar conflicto un tercer motor, asi que para empezar a hacer los primeros ejercicios usé (en mi caso) el MySQL de XAMPP (que resultó ser MariaBD en su versión 10.1.35-MariaDB – mariadb.org).

Entonces usando el panel de control de XAMPP corría el servicio de MySQL y luego entrábamos a Workbench.

Para verificar la versión del motor de base de datos, entré al phpMyAdmin y ahí fue donde descubrí que aunque hermanos, no es el mismo motor.

Porque si, MySQL no es lo mismo que MariaDB [1][2][9]

En el “paper” [1] estimado Abraham va a leer algo que no le agradará respecto a PostgreSQL.

Y pues asi usaba el Workbench que al ser ya dos motores diferentes advierte sobre esta situación informando que pudiera haber problemas de compatibilidad. Así se define la conexión en Workbench y se prueba con el botón <<Test Connection>>

Aun así se acepta la conexión y se pudo trabajar en clase con esta supuesta incompatibilidad.

Hasta aquí ningún problema, podemos observar, usar y crear nuestras bases de datos.

Pero uno de los temas era la conexión con bases de datos remotas, en alguna clase usábamos mi equipo como servidor de base de datos (una instancia de SQL Server Express 2014) en una máquina virtual, entonces para cubrir el tema e instalar una versión compatible, me di a la tarea de instalar solo el server en una máquina virtual (un Windows 10 que ya está pidiendo la licencia).

La instalación no tuvo problemas con la versión de la comunidad [3] solo tuve que bajar unos Windows Installer de C++ y las cosas fluyeron, pero al querer levantar el servicio o bien usar los ejecutables como mysql y mysqld me marcaba un error referente al datadir.

En la documentación de MySQL viene (se supone) que paso a paso la instalación del servidor en Windows, sin embargo algo pasaba que no podía hacerlo funcionar.

Una de las cosas que descrubrí es que el servidor de MySQL se ejecuta como un servicio de Windows, entonces ya tenía el servidor funcionando en modo gráfico.

Sin embargo no podía conectar, leí algunos post sobre como poder accesar de modo remoto a las bases de datos que muchos de lo que se encuentra es para Linux.

Para hacer esto es por consola pero no podía ejecutar ni mysqld ni mysql.

Descubrí también que cuando se instala como servicio Windows el archivo my.ini esta oculto en la máquina virtual, sin embargo cuando haces una búsqueda con el explorador de archivos, el archivo my.ini se puede localizar [4].

Esta en un directorio llamado ProgramData\MySQL\MySQL Server 8.0.

Mi primer golpe fue que pudiera hacer funcionar las instrucciones del motor para poder seguir con el procedimiento, de tanto leer y buscar me encontré por fin con esta solución. Dicha solución es que el archivo my.ini sea copiado a la carpeta de Windows (C:\Windows), mi teoría es que aquí ya encuentra el datadir que era el error que siempre me marcaba “If you have installed MySQL to a directory other than C:\Program Files\MySQL\MySQL Server 5.7, ensure that the MySQL server is aware of this through the use of a configuration (my.ini) file. Put the my.ini file in your Windows directory, typically C:\WINDOWS. To determine its exact location from the value of the WINDIR environment variable, issue the following command from the command prompt:”[5]

Lo que sigue es resetear la contraseña root y ahí siguieron más minutos de intentos y lecturas para hacer funcionar dicho procedimiento detallado en el sitio oficial [6].

Casi siendo los 4:00 am, se me ocurrió dar el mismo comando con la opción –console, y aquí me mando el error (un punto y coma al final) un bug de MySQL, y por fin pude dar contraseña a mi usuario root, aunque checando la documentación el punto y coma si lo marcaba pero quizás ya en el cansancio lo omití, aquí la explicación del error.[7]

Y bien casi la meta. En la web hay ejemplos de como darle la capacidad al usuario root de conectarse remotamente (según la experiencia empírica cambiar de ‘root’@’localhost’ a ‘root’@’%’) . No tuve éxito por lo que mejor creamos un nuevo usuario con el siguiente conjunto de instrucciones [8]:

Este usuario me sirve para conectarme de forma remota con el server, le pongo una ip estática a la máquina virtual, le quitó el password y listo podemos conectarnos de forma remota al servidor de MySQL en su versión más actual.

Podemos ver que estamos conectados mediante nuestro servidor remoto a un esquema que acabo de crear para nuestra siguiente práctica.

Hasta aquí esta práctica para la conexión remota a una base de datos. Después de este “San Quintín” entiendo porque los DBA’s ganan tanto, ¿verdad que si mi estimado Ingeniero F.J. García G?

Hasta la vista.

Profesor Miguel Araujo.

Webgrafía

[1] https://www.researchgate.net/publication/315469050_A_comparison_of_database_performance_of_MariaDB_and_MySQL_with_OLTP_workload

[2] https://www.cloudways.com/blog/mysql-vs-mariadb/

[3] https://dev.mysql.com/downloads/mysql/

[4] https://www.tutorialspoint.com/can-t-find-my-ini-in-mysql-directory

[5] https://dev.mysql.com/doc/refman/5.7/en/windows-troubleshooting.html

[6] https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

[7] https://bugs.mysql.com/bug.php?id=74732

[8] https://docs.bluehosting.cl/tutoriales/servidores/como-crear-un-nuevo-usuario-y-otorgar-permisos-en-mysql.html

[9] https://www.overant.com/blog/diferencias-entre-mysql-y-mariadb/

Deja un comentario