Está en la página 1de 11

Cómo Instalar MySQL en CentOS 7

comoinstalar.me/como-instalar-mysql-en-centos-7/

El Instalador January 9,
2019

En esta entrada vamos a ver cómo instalar MySQL en CentOS 7, para poder trabajar con
este motor de bases de datos relacionales. Imprescindible para entornos LAMP o LEMP,
para sitios WordPress, etc.

Si te lo estás preguntando, trataremos con la implementación oficial de Oracle, es decir,


instalaremos MySQL Server 100% original.

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 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.

1/11
Página de descargas oficial de MySQL

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

2/11
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.

3/11
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 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 . Concretamente son 3 repositorios que podemos ver fácilmente
listando los repositorios activos y filtrando por los que contengan la palabra mysql:

4/11
~$ 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:

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:

5/11
[...]

# 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:

Y volvemos a buscar los paquetes disponibles de MySQL:

6/11
~$ 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 se encargará de descargarlo
e instalarlo junto a todas sus dependencias:

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


7/11
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.

8/11
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í:

9/11
~$ 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

10/11
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


(3 votos, promedio: 5,00 de 5)
Cargando…

11/11

También podría gustarte