Cómo disponer de MySQL 8 portable

Posted by in Bases de datos, MySQL

En la entrada anterior se comentó sobre cómo disponer de un servidor de MySQL portable, utilizando la herramienta XAMPP, mientras que en esta entrada, te propongo que en vez de MariaDB, sea MySQL 8 el servidor para trabajar.

Descarga de MySQL

Lo primero es que para disponer de una versión portable, no podemos hacer uso del instalador de MySQL (en este blog ya os conté cómo instalar MySQL 5.6). En este ocasión, nos descargamos la versión zip.

Descargando MySQL 8

Una vez descargado el fichero, procedo a descomprimir el contenido del mismo en un directorio, a ser posible, sin espacios en blanco ni caracteres raros. En mi caso, f:\mysql8

Antes de poder arrancar MySQL, es necesario disponer de un fichero de configuración my.ini, vital para MySQL, y que tendremos que crear (o utilizar alguno que ya tengamos de otra instancia de MySQL).

Un segundo aspecto muy importante es que no se incluye el directorio data, que es donde normalmente se encuentran las bases de datos, por lo que será necesario la realización de algunos pasos intermedios.

Pero primero, vamos con el fichero de configuración (en este enlace anterior, os cuento cómo lo hice cuando migré a MySQL 5.6 y trabajé con el fichero de configuración):

my.ini

El fichero my.ini es el fichero de configuración de MySQL, y que si miramos en /bin, no encontraremos ninguno. Por tanto, será necesario crearlo. Te dejo lo básico:

# my.ini para MySQL 8.0.x de @manejandodatos . http://manejandodatos.es

[client]
port=3306
socket=/tmp/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]
port=3306
socket=/tmp/mysql.sock
key_buffer_size=16M
max_allowed_package=100M
basedir=»f:/mysql8″
datadir=»f:/mysql8/data»

Aquí lo puedes ver:

my.ini para configurar MySQL

Creación de fichero de iniciar MySQL: _start.bat

Para iniciar el servidor MySQL, vamos a crear un arhivo .bat que nos facilite el proceso, y es bastante simple:

f:\mysql8\bin\mysqld.exe –console

Yo lo he incluido en el directorio mysql8.

Ahora, desde una consola, lo ejecutamos y ….

Error al iniciar

… y obtenemos un «bonito» error, porque aún no está completamente configurado.

Por tanto, es necesario modificar la primera inicialización del servidor, incluyendo el comando

mysqld --initialize --console

para inicializar el directorio de datos.

Por supuesto, este proceso inicial puede leerse en la documentación, dónde te lo explican bastante bien.

OJO! Este proceso de inicio del directorio de datos es diferente si usas MariaDB, al no existir la opción –initialize

Inicialización del directorio de datos

Así que, ejecutamos el siguiente comando:

bin\mysqld.exe –initialize –console

Y durante unos segundos, se ejecuta el proceso de inicialización de datos, accediendo al fichero my.ini.

Inicialización del directorio de datos

Cómo bien puedes leer en la última línea, este proceso de inicialización ha generado el directorio data, y también ha creado una clave temporal para root, y que será vital para continuar.

Ahora sí que podemos arrancar el servidor corriendo nuestro archivo _start.bat y cómo bien puedes ver, el servidor está ya plenamente operativo:

MySQL8 operativo

Probamos que, aun disponiendo de una clave temporal, podemos acceder al servidor. Para ello, abrimos una nueva consola, y accedemos a f:\mysql8\bin. Escribimos lo siguiente:

mysql -u root -p

y nos pide la clave temporal, y la ponemos:

Consola de MySQL

Sin embargo, aún no podemos hacer uso del servidor. Cualquier consulta nos recuerda que tenemos una clave temporal y será necesario cambiarla:

Clave temporal impide trabajar con MySQL

Así que, siguiendo las indicaciones de la documentación, la forma de cambiar la clave del usuario root a root-password (aquí pones la tuya!) es con el comando:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root-password';

Ahora sí podemos ejecutar nuestra consulta de conocer la versión del servidor:

MySQL operativo

Por supuesto, si necesitas llevar el servidor a otra unidad, deberás modificar my.ini para que apunte a la ubicación correcta, y _start.bat para lo mismo.

Probamos a conectar desde HeidiSQL, y comprobamos que tenemos todo preparado para trabajar:

MySQL 8 accediendo desde HeidiSQL

Y con esto, concluye esta entrada, que espero te sea de mucha utilidad.

Happy coding!