Cómo instalar MySQL en CentOS 7

Cómo instalar MySQL en CentOS 7

En esta entrada vamos a ver cómo instalar MySQL en CentOS 7 paso a paso para poder trabajar con este motor de bases de datos relacionales. Imprescindible para entornos LAMP o LEMP, para sitios basados en los CMS más populares, etc.

Si te lo estás preguntando, trataremos con la implementación oficial de Oracle, es decir, instalaremos MySQL Server 100% original.

Cómo instalar MySQL en CentOS 7

Si has intentado instalar MySQL en CentOS 7 desde los repositorios oficiales de CentOS es posible que hayas comprobado que sólo está disponible la implementación libre de MariaDB. A pesar de que intentes instalar el paquete mysql con yum el paquete que se instala realmente es mariadb.

¿Qué podemos hacer? Es sencillo. En la página de descargas oficial de MySQL nos ofrecen paquetes para actualizar los repositorios de diversas distribuciones de Linux añadiendo el repositorio oficial de MySQL.

como instalar mysql en centos 7
Página de descargas oficial de MySQL

Vemos una serie de enlaces para acceder a repositorios para distintos sistemas operativos. Entre ellos está el repositorio para Yum que es la herramienta que usan distribuciones como Red Hat, Fedora y, lo que nos interesa en este caso, CentOS.

como descargar mysql en centos 7
Paquetes para descargar MySQL a través de Yum

Entre los paquetes que aparecen disponibles no existe uno específico para CentOS, pero no hay problema. Elegiremos el paquete para Red Hat 7 y nos llevará a una pantalla donde nos da la opción de registrarnos en MySQL o entrar en nuestra cuenta.

como descargar repositorio mysql para centos 7
Paquete con repositorio de MySQL compatible para CentOS 7

No es necesario ni registrarse ni entrar en nuestra cuenta (si la tenemos), ya que más abajo tenemos un enlace «No thanks, just start my dowload«. Podemos pinchar para descargar, o copiar el enlace para pegarlo en consola, que es lo que haremos en este tutorial.

Con el comando wget descargaremos el paquete .rpm que actualizará los repositorios de nuestro sistema:

~$ wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

Y tendremos descargado el paquete, listo para instalarlo con yum o rpm. Por variar un poco, lo vamos a hacer con rpm:

~$ sudo rpm -Uvh mysql80-community-release-el7-1.noarch.rpm

Ahora tenemos más repositorios desde donde vamos a poder descargar MySQL 8 para CentOS 7 a través de yum. Concretamente son 3 repositorios que podemos ver fácilmente listando los repositorios activos y filtrando por los que contengan la palabra mysql:

~$ yum repolist enabled |grep mysql
mysql-connectors-community/i386        MySQL Connectors Community            65
mysql-tools-community/i386             MySQL Tools Community                 53
mysql80-community/i386                 MySQL 8.0 Community Server            28

Antes de nada, lo primero es actualizar la información de los repositorios:

~$ sudo yum -y update

Y en teoría estaríamos listos para descargar MySQL para CentOS 7.

MySQL Server 8 y CentOS 7 32 bits

En el caso de estar trabajando sobre una instalación de 32 bits de CentOS 7, al buscar los paquetes disponibles de MySQL ocurre esto:

~$ yum search mysql |grep -i ^mysql
MySQL-python.i686 : An interface to MySQL
mysql-community-release.noarch : MySQL repository configuration for yum
mysql-connector-c++.i686 : MySQL database connector for C++
mysql-connector-c++-devel.i686 : Development header files and libraries for
mysql-connector-c++-jdbc.i686 : MySQL Driver for C++ which mimics the JDBC 4.0
mysql-connector-java.noarch : Official JDBC driver for MySQL
mysql-connector-odbc.i686 : An ODBC 8.0 driver for MySQL - driver package
mysql-connector-odbc-debuginfo.i686 : Debug information for package
mysql-connector-odbc-setup.i686 : An ODBC 8.0 driver for MySQL - setup library
mysql-connector-python.noarch : Standardized MySQL database driver for Python
mysql-ref-manual-8.0-en-html-chapter.noarch : The MySQL Reference Manual (HTML,
mysql-ref-manual-8.0-en-pdf.noarch : The MySQL Reference Manual (PDF, English)
mysql-router.i686 : MySQL Router
mysql-router-community.i686 : MySQL Router
mysql-router-debuginfo.i686 : Debug information for package mysql-router
mysql-utilities.noarch : Collection of utilities used for maintaining and
mysql-utilities-extra.noarch : Additional files for mysql-utilities
mysql80-community-release.noarch : MySQL repository configuration for yum

Como se ve en los resultados de la búsqueda, no aparece el paquete que necesito, mysql-community-server. Es posible que aún no esté compilada la versión 8 para CentOS 7 32 bits. ¿Qué hacer?

Por suerte, el repositorio ofrece las versiones anteriores de MySQL Communnity Server. Tendremos que editar la configuración del repositorio, desactivar la versión 8 y activar la versión inmediatamente anterior.

Para ello, editamos el archivo /etc/yum.repos.d/mysql-community.repo:

~$ sudo nano /etc/yum.repos.d/mysql-community.repo

Ahora buscamos la siguiente sección:

...

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

...

En la sección [mysql80-community] vemos que enabled tiene un valor 1, por lo que es la versión activa. Sin embargo, en la sección [mysql57-community], que es la inmediatamente anterior (y también en el resto), enabled tiene un valor 0, por lo que esta versión no está activa. Lo que haremos será intercambiar los varlores, activar la versión 5.7 poniendo enabled a 1 y desactivar la versión 8 poniendo enabled a 0.

...

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

...

Guardamos los cambios y actualizamos los repositorios:

~$ sudo yum -y update

Y volvemos a buscar los paquetes disponibles de MySQL:

~$ yum search mysql |grep -i ^mysql

...

mysql-utilities.noarch : Collection of utilities used for maintaining and
mysql-utilities-extra.noarch : Additional files for mysql-utilities
mysql57-community-release.noarch : MySQL repository configuration for yum
mysql80-community-release.noarch : MySQL repository configuration for yum
mysql-community-server.i686 : A very fast and reliable SQL database server

¡Ahora sí aparece el paquete mysql-community-server!

Para las versiones de CentOS 7 de 64 bits, aún no he testeado si está disponible MySQL Community Server 8. En cuanto lo compruebe, actualizaré el artículo.

Cómo instalar MySQL Community Server en CentOS 7

El paquete que debemos instalar es mysql-community-server, y yum se encargará de descargarlo e instalarlo junto a todas sus dependencias:

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

Y ya lo tendremos instalado. Para comprobar la versión del servidor MySQL instalado basta con comprobarlo desde consola con mysqld -V:

~$ mysqld -V
/usr/sbin/mysqld  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server (GPL))

Aunque el servicio MySQL está ya instalado, ni está activo ni arranca cada vez que inicia el sistema. Para activar el inicio con el sistema y para arrancarlo manualmente lanzamos un par de comandos:

~$ sudo systemctl enable mysqld
~$ sudo systemctl start mysqld

Activar el servicio de MySQL para que arranque junto al sistema, no lo inicia; hay que iniciarlo manualmente para tenerlo disponible de inmediato sin reiniciar el sistema.

Y ahora sí está iniciado MySQL Server, listo para trabajar con él.

Cómo configurar MySQL en CentOS 7

Una vez funcionando el servidor MysQL en nuestro sistema CentOS es hora de retocar su configuración para dejarla con unos valores óptimos para nuestras necesidades de trabajo.

Cómo encontrar la contraseña inicial de root en MySQL Server

Una particularidad de MySQL Server para CentOS es que la cuenta de root de MySQL se crea con una contraseña temporal aleatoria que se guarda en los logs del servicio mysqld. Para encontrar dicha contraseña tendremos que revisar los logs o filtrarlos fácilmente desde consola:

~$ grep 'temporary password' /var/log/mysqld.log
2019-01-09T13:20:46.566131Z 1 [Note] A temporary password is generated for root@localhost: wrh(Vmgew7e+

Cómo hacer más segura la instalación de MySQL en CentOS 7

Habiendo localizado la contraseña temporal, enseguida la vamos a cambiar, ya que esta es una de las tareas que realiza el script mysql_secure_installation que ejecutaremos a continuación:

~$ sudo mysql_secure_installation

Este script interactivo en primer lugar nos solicita la contraseña temporal de root para acto seguido obligarnos a cambiarla. La nueva contraseña debe ser fuerte, por lo que debe contener caracteres alfanuméricos, alguna mayúscula y algún carácter especial (fíjate en la propia contraseña temporal).

Además, se nos preguntará si deseamos:

  • Eliminar los usuarios anónimos.
  • Desactivar el acceso remoto para root.
  • Eliminar la base de datos de pruebas.
  • Actualizar los permisos del sistema de bases de datos.

Para una instalación lo más segura posible lo recomendable es contestar afirmativamente a todas estas cuestiones.

Cómo configurar acceso remoto a MySQL en CentOS 7

Para acceder remotamente a MySQL Server, por ejemplo desde MySQL Workbench, tenemos que seguir dos pasos:

  • Permitir el acceso remoto en la propia configuración de MySQL Server
  • Configurar el acceso a través del firewall de CentOS 7

Configurar MySQL Server para acceso remoto

Las buenas noticias son que MySQL Server en CentOS 7 viene con una configuración por defecto que permite el acceso remoto.

El archivo de configuración principal del servicio MySQL en CentOS 7 es /etc/my.cnf. Si lo editamos en principio no deberíamos encontrar la directiva bind-address de la sección [mysqld]. Cuando esta directiva no aparece en el archivo de configuración, bind-address toma un valor por defecto que es 0.0.0.0, lo que significa que el servicio de MySQL escucha peticiones a través de todas las interfaces de red del sistema, que es lo que queremos para un acceso remoto.

Sin embargo, si lo que queremos es desactivar el acceso remoto a MySQL Server, podríamos editar /etc/my.cnf y cambiar el valor de bind-address para que sólo se escuchen peticiones desde la propia máquina, o localhost:

...

[mysqld]

...

bind-address=127.0.0.1

Tras lo cual debemos reiniciar el servicio para que los cambios tomen efecto. A diferencia de otros servicios, MySQL Server no dispone de la opción de recargar la configuración sin reiniciar el servicio.

~$ sudo systemctl restart mysqld

MySQL Server no dispone de la opción de recargar su configuración. Es necesario reiniciar el servicio.

Configurar el firewall de CentOS 7 para el acceso remoto de MySQL Server

CentOS 7 viene con el firewall activo por defecto, por lo que aunque tengamos configurado el servicio MySQL para recibir conexiones remotas, el firewall no las permitirá. Debemos, por tanto, configurar el firewall surgiendo dos posibilidades.

Acceso remoto permanente

En esta situación permitiremos las conexiones entrantes a MySQL Server todo el tiempo, incluso después de reiniciar el sistema. En ambientes controlados o seguros puede ser una opción bastante cómoda.

Para ello configuraremos el firewall de CentOS 7 así:

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

Y quedará abierto el firewall para las conexiones remotas hacia el servidor MySQL.

Acceso remoto temporal

En esta situación, permitiremos el acceso remoto a MySQL Server antes de realizar la conexión. Terminada la conexión remota, cerraremos el acceso.

Para ello, antes de conectar al servicio MySQL, a través de un acceso remoto por consola configuraremos el firewall de forma temporal:

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

Realizaremos nuestro trabajo con el servidor MySQL, por ejemplo a través de MySQL Workbench, y al terminarlo, desde consola dejaremos cerrado el firewall de nuevo:

~$ sudo firewall-cmd --remove-service=mysql
success
~$ sudo firewall-cmd --reload
success
~$

Quedando la puerta cerrada para visitantes no deseados.

Conclusión

Ya has visto cómo instalar MySQL en CentOS 7, es tan sencillo como añadir algunos repositorios, configurar la versión que nos interese o esté disponible, descargar y configurar.

Ahora tú decides si quieres trabajar con la versión del servidor de MySQL oficial o con implementaciones libres como MariaDB.

Si tienes alguna corrección, duda, pregunta o sugerencia para algún otro tutorial, déjame algún comentario.

Apoya este sitio

Si este artículo te ha servido, puedes apoyarnos con una mínima aportación para ayudarnos en la tarea de hacer más y mejores tutoriales de este tipo. ¡Gracias!

Valora esta entrada

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (3 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