En este artículo mostraremos cómo instalar MySQL Server en Rocky Linux 8 paso a paso, eligiendo entre la versión incluida en la distribución o la última disponible en el repositorio oficial, de modo que puedas trabajar con bases de datos sobre tu servidor o VPS Rocky Linux.
Contenido
Antes de instalar MySQL Server en Rocky Linux 8
Para poder seguir los pasos de esta guía de instalación de MySQL Server en Rocky Linux 8 es importante partir del siguiente escenario:
- Un sistema Rocky Linux 8 actualizado.
- Acceso a consola con un usuario con permisos de sudo.
- Conexión a Internet.
Como seguramente ya cumples con todo lo anterior es el momento de ajustar correctamente la altura del escritorio y ponernos manos a la obra.
Cómo configurar el repositorio oficial de MySQL para Rocky Linux 8
Antes de continuar con esta sección es importante saber que, en el momento de redactar este tutorial, el repositorio de Rocky Linux 8 incluye paquetes para MySQL Server 8.0.21, mientras que el repositorio oficial de MySQL ofrece la versión 8.0.28.
No es necesario configurar el repositorio oficial de MySQL para Rocky Linux 8, a no ser que prefieras usar la última versión disponible, en cuyo caso puedes continuar leyendo esta sección.
Para configurar el repositorio oficial visitaremos la página de descargas de MySQL para Rocky Linux 8:
De todos los enlaces «Download» mostrados el que nos interesa es el de Red Hat Enterprise Linux 8 (RHEL8), que nos lleva a una nueva página donde es posible iniciar sesión en el portal de Oracle, o crear una nueva cuenta:
Sin embargo, nada de esto es necesario, ya que la descarga del paquete que necesitamos se encuentra en el enlace «No thanks, just start my download«.
Podemos instalar este paquete directamente desde Internet trabajando desde consola:
~$ sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm
Ahora, al actualizar la información de los repositorios del sistema, se incluirán dos nuevos pertenecientes a MySQL:
~$ sudo yum update
Cómo instalar MySQL Server en Rocky Linux 8
Es el momento de instalar MySQL Server en Rocky Linux 8, teniendo en cuenta la fuente de paquetes que nos interese.
Si preferimos por mayor compatibilidad utilizar la versión de la distribución, usaremos el siguiente comando:
~$ sudo yum install -y mysql-server
Pero si hemos configurado el repositorio oficial y queremos la última versión disponible, este será el comando adecuado:
~$ sudo yum install -y --disablerepo=appstream mysql-server
Una vez descargados e instalados este paquete y sus dependencias se crea el servicio mysqld.service o mysqld en Rocky Linux 8, que por defecto no está iniciado.
Cómo habilitar y deshabilitar el servicio
La versión de la distribución no está habilitada para para iniciar automáticamente junto al sistema, pero puedes habilitar el servicio fácilmente:
~$ sudo systemctl enable mysqld
En cambio, la versión del repositorio oficial sí está habilitada, pero si no deseas que inicie automáticamente puedes deshabilitar el servicio:
~$ sudo systemctl disable mysqld
Cómo iniciar el servicio
Para iniciar MySQL Server en Rocky Linux 8 usaremos la opción start del comando systemctl:
~$ sudo systemctl start mysqld
Es fácil comprobar el estado del servicio con el comando systemctl status mysqld
:
Cómo conectar al servicio por primera vez
Inicialmente sólo disponemos del usuario root de MySQL para poder conectar al servicio.
Versión de la distribución
El usuario root no dispone de contraseña así que accedemos sin que se nos solicite:
~$ mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. ... mysql>
Es posible trabajar sin ningún tipo de restricción, aunque sería buena idea que una de las primeras acciones a realizar sea precisamente crear una contraseña para root:
> alter user root@localhost identified by 'XXXXXXXX';
No hay restricciones a la hora de crear la contraseña, ya que esta versión no carga por defecto el complemento de validación (validate_password).
Versión del repositorio oficial
Durante la instalación se ha creado una contraseña aleatoria temporal que podemos recuperar desde el archivo de registro de eventos del servicio, usando el siguiente comando:
~$ sudo grep -i password /var/log/mysqld.log ... 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: VtIQ?l5Wis-t
Ahora podemos iniciar sesión con el usuario root empleando dicha contraseña:
~$ mysql -u root -p
La única operación que podemos realizar es cambiar la contraseña temporal de root:
> alter user root@localhost identified by 'XXXXXXXX';
Por defecto la política de seguridad exige contraseñas de fuerza media (alfanuméricas, con mayúsculas y minúsculas y caracteres especiales).
Una vez cambiada la contraseña ya podemos trabajar con normalidad y lanzar otros comandos.
Cómo crear tu propio usuario administrador
Es interesante disponer de tu propio usuario administrador en lugar de trabajar con root, para acceder remotamente, vía web, etc.
Bastará con lanzar el siguiente comando (con la sesión iniciada):
> create user chacho identified by 'XXXXXXXX';
A continuación damos permisos al nuevo usuario sobre bases de datos y otros usuarios:
> grant all privileges on *.* to chacho with grant option;
Actualizamos la tabla de permisos:
> flush privileges;
Y cerramos la sesión:
> exit
Ahora podemos volver a conectar al servicio usando en esta ocasión nuestro nuevo usuario:
~$ mysql -u chacho -p
Cómo configurar MySQL Server en Rocky Linux 8
La tarea de configurar MySQL Server en Rocky Linux 8 se reduce a realizar ajustes sobre su archivos de configuración. En el caso de la versión de la distribución estos archivos son /etc/my.cnf y los que contiene el directorio /etc/my.cnf.d/.
La versión del repositorio oficial contiene toda la configuración únicamente en el archivo /etc/my.cnf.
Cada vez que realicemos cambios sobre estos archivos será necesario reiniciar el servicio:
~$ sudo systemctl restart mysqld
Inicio de sesión mediante sockets de Unix
Hemos visto que el usuario root accede al servicio mediante usuario y contraseña; sin embargo, muchos administradores prefieren el acceso mediante sockets, de modo que utilizando el usuario root de Rocky Linux 8 o usuarios con permiso de sudo se pueda iniciar sesión sin contraseña.
Para hacer esto hay que lograr que MySQL Server cargue el plugin auth_socket, que en Rocky Linux 8 está desactivado por defecto.
En el caso de la versión de la distribución editamos el archivo mysql-server.cnf:
~$ sudo nano /etc/my.cnf.d/mysql-server.cnf
Y para la versión del repositorio oficial editamos el archivo my.cnf:
~$ sudo nano /etc/my.cnf
Dentro de la sección mysqld añadimos la siguiente directiva:
... [mysqld] ... plugin-load-add=auth_socket.so ...
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mysqld
Iniciamos sesión con root y contraseña:
~$ mysql -u root -p
Y modificamos la forma en que inicia sesión root cambiando su plugin de autenticación (ahora que ya está disponible):
> alter user root@localhost identified with auth_socket;
Actualizamos la tabla de permisos, cerramos la sesión e intentamos iniciarla como hicimos instantes atrás:
~$ mysql -u root -p Enter password: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Veremos que no es posible, aunque si lanzamos el cliente mysql con sudo sin ningún argumento más sí iniciaremos sesión:
~$ sudo mysql Welcome to the MySQL monitor. Commands end with ; or \g. ... mysql>
Justo lo que queríamos.
Puedes activar esta forma de iniciar sesión para cualquier otro usuario de Rocky Linux 8 que disponga a su vez de un usuario en MySQL Server con idéntico nombre. Por ejemplo, para el usuario administrador que creamos antes:
> alter user chacho identified with auth_socket;
Ahora el usuario chacho de Rocky Linux 8 puede iniciar sesión con el usuario chacho de MySQL Server sin más que lanzar el comando mysql desde su sesión de consola:
~$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. ... mysql>
Política de contraseñas
La validación de contraseñas de MySQL Server a la hora de crearlas o modificarlas se debe a un componente llamado validate_password, desactivado en la versión de la distribución y activado en la del repositorio oficial.
Activar este componente es sencillo, una vez iniciada sesión como administrador:
> install component 'file://component_validate_password';
Desactivar el componente es igual de sencillo:
> uninstall component 'file://component_validate_password';
Con el componente cargado, la política de seguridad por defecto es de tipo medio:
> show variables like 'validate_password.policy'; +--------------------------+--------+ | Variable_name | Value | +--------------------------+--------+ | validate_password.policy | MEDIUM | +--------------------------+--------+ 1 row in set (0.00 sec) >
En algunos entornos puede ser engorroso trabajar con contraseñas tan fuertes y en otros, donde prime más la seguridad, la política por defecto será demasiado débil.
Puedes cambiar el nivel de la política configurándola en el archivo de configuración principal, añadiendo en la sección mysqld la directiva validate_password.policy con el valor requerido (LOW, MEDIUM o HIGH):
... [mysqld] ... validate-password.policy=HIGH ...
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mysqld
Si iniciamos sesión podremos comprobar el cambio de política:
> show variables like 'validate_password.policy'; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | validate_password.policy | HIGH | +--------------------------+-------+ 1 row in set (0,03 sec) >
Ahora al crear o cambiar contraseñas los requisitos de las mismas se adecuarán al nivel de la política aplicada.
Acceso remoto
Por defecto el servicio MySQL Server en Rocky Linux 8 permite conexiones desde red, aunque normalmente serán rechazadas por el firewall.
Para disfrutar de acceso remoto será necesario añadir una regla al firewall:
~$ sudo firewall-cmd --permanent --add-service=mysql
Habrá que aplicar la nueva configuración para que sea tenida en cuenta:
~$ sudo firewall-cmd --reload
Ahora, desde cualquier máquina en red es posible conectar al servicio usando, por ejemplo, un cliente de consola como mysql, indicando además del usuario la dirección del servidor Rocky Linux 8 sobre el que corre MySQL Server:
~$ mysql -h rocky8.local.lan -u chacho -p
Si no estás interesado en acceder de forma remota a MySQL Server, además de mantener el firewall bloqueando el acceso, podrías querer desactivarlo en la configuración del servicio, para lo que editamos su archivo de configuración y dentro de la sección mysqld añadimos la directiva bind-address con valor 127.0.0.1:
... [mysqld] ... bind-address=127.0.0.1 ...
Guardamos el archivo y reiniciamos el servicio:
~$ sudo systemctl restart mysqld
Ahora sólo se permitirán conexiones TCP/IP locales al servicio.
Conclusión
Ahora que sabes cómo instalar y configurar MySQL Server en Rocky Linux 8 ya puedes trabajar con este potente y extendido motor de bases de datos relacionales sobre tus propios desarrollos o como requisito para aplicaciones y entornos de terceros.
¡Apoya comoinstalar.me!
¿Ya puedes trabajar con este servicio de bases de datos en tu máquina gracias a nuestra pequeña guía? Si es así y quieres agradecérnoslo, cualquier contribución para el mantenimiento de este sitio y la creación de nuevos artículos y tutoriales es bienvenida.
Puedes ayudarnos dejando tan sólo 1 $ de propina desde PayPal:
O, si te sientes especialmente agradecido, puedes invitarnos a un café:
¡Gracias!
Actualizado a la versión 8.0.28 del repositorio oficial.