Cómo instalar MySQL en Fedora 30

Cómo instalar MySQL en Fedora 30

En esta entrada veremos cómo instalar MySQL en Fedora 30 paso a paso. Si prefieres la versión nativa de este motor de bases de datos, al final de esta guía tendrás en marcha el servicio, con tu propio usuario administrador y acceso remoto.

Antes de instalar MySQL en Fedora 30

Si vas a seguir esta guía de instalación de MySQL en Fedora 30 necesitarás lo siguiente:

  • Un sistema Fedora 30 actualizado.
  • Conexión a Internet para descargar los paquetes necesarios.
  • Un usuario con privilegios de sudo, o el mismo root.

Si estás leyendo esto es porque seguramente cumples todos los requisitos, así que puedes abrir tu terminal de comandos porque empezamos ya.

Cómo instalar MySQL en Fedora 30

Para instalar MySQL en Fedora 30 usaremos los paquetes disponibles en el repositorio oficial de la propia distribución. Por lo tanto, el primer paso opcional pero recomendable sería actualizar el sistema, tanto la lista de paquetes disponibles como los propios paquetes ya instalados:

~$ sudo yum -y update

Con el sistema totalmente actualizado, el mejor escenario posible para instalar nuevo software, instalaremos el paquete community-mysql-server:

~$ sudo yum -y install community-mysql-server

Se instalará el paquete del servidor de MySQL junto con todas sus dependencias. Una vez finalizado el proceso se crea un nuevo servicio en el sistema, mysqld.service o más brevemente mysqld, pero no está activado ni en funcionamiento.

En primer lugar vamos a activar MySQL para que se inicie automáticamente en el arranque de Fedora 30:

~$ sudo systemctl enable mysqld

Hecho esto, iniciamos MySQL Server para poder interactuar con él. Arrancamos el servicio mysqld con la opción start del comando systemctl:

~$ sudo systemctl start mysqld

El servicio queda en ejecución a la escucha de conexiones y peticiones, como podemos comprobar con systemctl:

~$ systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-07-16 10:55:51 CEST; 20s ago
  Process: 3480 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Process: 3502 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
  Process: 3623 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
 Main PID: 3582 (mysqld)
   Status: "SERVER_OPERATING"
    Tasks: 38 (limit: 1144)
   Memory: 432.9M
   CGroup: /system.slice/mysqld.service
           └─3582 /usr/libexec/mysqld --basedir=/usr

... fedora30.local systemd[1]: Starting MySQL 8.0 database server...
... fedora30.local mysql-prepare-db-dir[3502]: Initializing MySQL database
... fedora30.local systemd[1]: Started MySQL 8.0 database server.

Como puedes comprobar, Fedora 30 instala MySQL 8.0, una versión muy actual del motor de bases de datos.

Cómo instalar el cliente de MySQL en Fedora 30

El cliente de MySQL, el comando mysql, se instala como parte de las dependencias del servicio. O sea que, si has instalado MySQL Server ya tienes también el cliente en tu sistema Fedora 30.

No obstante, si necesitaras solamente el cliente para un sistema Fedora 30 que conectará remotamente al servicio MySQL, entonces puedes instalar el cliente de consola mysql con el paquete community-mysql:

~$ sudo yum -y install community-mysql

Cómo configurar MySQL en Fedora 30

Para configurar MySQL en Fedora 30 debes saber que la configuración del servicio se guarda en el archivo /etc/my.cnf y en los archivos del directorio /etc/my.cnf.d/.

Cualquier cambio en la configuración que hagamos editando estos archivos no se tomará en cuenta hasta que se reinicie el servicio mysqld.

El usuario root de MySQL en Fedora 30

Algo importante que debes saber es que el usuario root de MariaDB en Fedora 30 no tiene contraseña por defecto, por lo que cualquier usuario podría acceder como superadministrador de MySQL.

instalar mysql en fedora 30

Por tanto puede que te interese asignar una contraseña para root:

~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.16 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> alter user root@localhost identified by 'XXXXXXXX';
Query OK, 0 rows affected (0.02 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye
~$

Ahora aunque cualquier usuario de Fedora 30 podrá conectar a MySQL Server como root, necesitará suministrar la contraseña para establecer la conexión.

Otro detalle a tener en cuenta es que el usuario root sólo tiene acceso local.

Cómo crear un usuario administrador

Vamos a crear un usuario de MySQL que pueda crear otros usuarios y bases de datos, administrar permisos, etc. Para ello conectaremos como root mediante el cliente mysql:

~$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 21
Server version: 8.0.16 Source distribution

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create user chacho identified by 'XXXXXXXX';
Query OK, 0 rows affected (0.04 sec)

mysql> grant all privileges on *.* to chacho with grant option;
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye
~$

Este usuario además tiene acceso remoto.

Método de autenticación

El plugin de autenticación por defecto de MySQL 8 es el caching_sha2_password, que es más seguro y avanzado que el nativo. Sin embargo, no todos los clientes de MySQL lo soportan y podrían ocasionar error de conexión.

ERROR 2059 (HY000): Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory

La solución pasa por usar clientes actualizados. El cliente mysql que se instala como dependencia del servidor funciona perfectamente, y las versiones recientes de MySQL Workbench también funcionan.

Pero si por algún motivo necesitas utilizar un cliente o librería cliente que no soporte caching_sha2_password la solución pasa por cambiar el plugin del usuario con el que quieras conectar por el plugin mysql_native_password. Pero como la contraseña se creó con otro plugin es necesario volver a crearla.

Por ejemplo, vamos a hacer el proceso para el usuario que hemos creado anteriormente. En primer lugar conectamos con un usuario con privilegios para administrar (en este ejemplo el propio usuario era administrador):

~$ sudo mysql -u chacho -p

Introducimos la contraseña y empezamos a trabajar con el cliente interactivo. En primer lugar seleccionamos la base de datos mysql, que guarda la información sobre los usuarios:

mysql> use mysql;

Con la base mysql en uso, cambiamos el plugin y dejamos en blanco la antigua contraseña:

mysql> update user set plugin='mysql_native_password', authentication_string='' where user='chacho';

Actualizamos la tabla de privilegios para que se tenga en cuenta el nuevo plugin configurado:

mysql> flush privileges;

Y creamos una nueva contraseña, esta vez con el plugin nativo:

mysql> alter user chacho identified by 'XXXXXXXX';

Volvemos a actualizar la tabla de privilegios para que se tenga en cuenta la nueva contraseña:

mysql> flush privileges;

Ya sólo quedaría salir del cliente.

A partir de este momento ya podemos conectar con cualquier cliente de MySQL tanto antiguo como moderno.

Plugin de autenticación por defecto

Si quieres usar MySQL 8 con el plugin mysql_native_password por defecto, para que todos los nuevos usuarios lo usen directamente, edita el archivo /etc/my.cnf.d/community-mysql-server.cnf:

~$ sudo nano /etc/my.cnf.d/community-mysql-server.cnf

Busca la sección mysqld y añade la siguiente línea:

default-authentication-plugin=mysql_native_password

A continuación reinicia el servicio:

~$ sudo systemctl restart mysqld.service

A partir de este momento cualquier nuevo usuario que se cree usará el plugin de autenticación mysql_native_password.

Para volver a la situación anterior, elimina o comenta la directiva y reinicia el servicio.

Acceso remoto a MySQL en Fedora 30

A diferencia de otros sistemas, en Fedora 30 se habilita el acceso remoto a MySQL por defecto.

Esto se debe a que en los archivos de configuración de MySQL no se incluye ninguna directiva bind-address que restrinja las conexiones externas. Si quisieras desactivar el acceso remoto tienes que editar el archivo /etc/my.cnf.d/community-mysql-server.cnf:

~$ sudo nano /etc/my.cnf.d/community-mysql-server.cnf

Si lo examinas cuidadosamente no encontrarás la citada directiva bind-address. Por tanto añádela con el valor 127.0.0.1 al final del archivo. Sería una línea como esta:

bind-address=127.0.0.1

Guardados los cambios, hay que reiniciar el servicio mysqld:

~$ sudo systemctl restart mysqld

Y ya no se permitirán las conexiones remotas. Si deseas volver a activarlas, borra o comenta la directiva bind-address y reinicia de nuevo el servicio mysqld.

Configurar el firewall para permitir conexiones remotas

De nada sirve que MySQL permita el acceso remoto si el firewall de Fedora 30 rechaza las conexiones externas. Debemos añadir una sencilla excepción del firewall para solucionar esto:

~$ sudo firewall-cmd --permanent --add-service=mysql
success
~$ sudo firewall-cmd --reload
success
~$

Con el acceso remoto habilitado y el firewall configurado ya es posible conectar a MySQL en nuestro sistema Fedora 30 desde otra máquina.

Probando el acceso remoto a MySQL en Fedora 30

Desde cualquier otra máquina que tenga el cliente mysql instalado podremos conectar remotamente al servicio MySQL de nuestro sistema Fedora 30. Basta usar el argumento -h indicando la dirección IP o el nombre de la máquina Fedora 30.

En el sistema de ejemplo de esta guía, la dirección IP de la máquina Fedora 30 es 192.168.112.138, y su nombre completo o FQDN es fedora30.local. Cualquiera de estos dos datos nos servirá para conectar desde otra máquina dentro de la red local:

~$ mysql -h fedora30.local -u chacho -p

acceso remoto mysql en fedora 30

Esto es perfectamente aplicable si tu máquina Fedora 30 tiene una dirección IP pública o un dominio en Internet.

Conclusión

Ahora que sabes cómo instalar y configurar MySQL en Fedora 30 paso a paso, estás listo para montar tus propios desarrollos o instalar complejas apliaciones que requieren este tipo de motor de bases de datos. Sólo tienes que decidir qué tipo de autenticación usar y poco más. Podrás administrar remotamente tu servicio MySQL y crear usuarios, bases de datos, etc.

Si tienes alguna duda o pregunta, sugerencia, notificación de errores o mejoras de esta guía, etc. déjame un mensaje.

¡Apoya este sitio!

Si has conseguido salir de un callejón sin salida en la instalación de MySQL en Fedora 30 gracias a esta pequeña guía, y sientes irrefrenables deseos de agradecérnoslo… cualquier mínima donación para el mantenimiento de este sitio y elaboración de nuevas guías es bienvenido. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Deja un comentario

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies.

ACEPTAR
Aviso de cookies