Cómo instalar MySQL 5.7 en CentOS 7

MySQL

MySQL es un gestor / servidor de bases de datos relacionales rápido, eficiente, seguro, estable, fácil de usar, multiplaforma (GNU/Linux, *BSD, Windows, …) y bien documentado. Actualmente el desarrollo de MySQL esta bajo la batuta de Oracle, no obstante la versión comunitaria está disponible bajo licencia GPL por lo que sigue siendo software libre.

MySQL 5.7 mejora varios aspectos de seguridad y rendimiento e introduce el tipo de datos JSON, permitiendo almacenar datos en un formato no relacional. Para ver todos los cambios realizados en MySQL 5.7 remítase a: What Is New in MySQL 5.7.

MySQL 5.7 no está disponible en los repositorios oficiales de CentOS 7 ya que ha sido reemplazado por MariaDB, una bifurcación de MySQL y aunque comparten características este último tiene un modelo de desarrollo y comunidad diferente a MySQL.

MySQL 5.7 puede ser descargado desde el sitio oficial de descarga de MySQL, no obstante es recomendable descargar la definición de repositorio para mantenernos actualizados con las mejoras y corrección de errores.

La siguiente figura muestra las opciones que debe elegir para CentOS 7, la flecha roja indica donde debe dar click para descargar la definición de repositorio, los recuadros naranjas señalan los paquetes que debe descargar si no desea usar el repositorio de MySQL.

Descargar definición de repositorio

Una vez que dio click en la flecha roja de la imagen anterior se le mostrará una pantalla como se muestra en la figura siguiente, el recuadro en rojo señala el paquete que debe descargar.

También puede descargar el paquete tecleando el siguiente comando (Si wget no está instaldo puede instalarlo ejecutando $ sudo yum -y install wget):

$  wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

Instalar definición de repositorio

Una vez que haya descargado la definición del repositorio puede intalarlo ejecutando:

$ sudo rpm -ivh mysql57-community-release-el7-9.noarch.rpm

Actualizar

Antes de instalar MySQL es recomendable actualizar el SO ejecutando:

$ sudo yum update 

Si una nueva versión del kernel ha sido instalada entonces reinicie el SO con:

$ sudo reboot

Instalar MySQL

Al instalar el paquete mysql-community-server se instalaran las dependencias y herramientas necesarias para ejecutar y administrar el servidor MySQL.

$ sudo yum install mysql-community-server

Comprobar estado del MySQL

Una vez que hemos instalado MySQL comprobamos si el servicio de MySQL está ejecutándose, para ellos usamos systemd (systemd es un reemplazo al sistema de inicialización SysV además es una suite de administración de servicios y configuraciones para el sistema operativo GNU/Linux) como se muestra en el mensaje el servicio de MySQL está detenido, note la línea Active: inactive (dead)

$ sudo systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html

Iniciamos el servicio de MySQL

Con el siguiente comando iniciamos el servidor MySQL y el mismo estará listo para recibir conexiones.

$ sudo systemctl start mysqld

Cuando se inicia el servicio el servidor MySQL genera una clave temporal, para saber cual es la clave ejecute el siguiente comando:

$grep -i password /var/log/mysqld.log 
...A temporary password is generated for root@localhost: Zxdo1jb5&fTy

Comprobar estado del MySQL

Comprobamos nuevamente el estado del servicio MySQL, note la línea Active: active (running)

$ sudo systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2017-03-21 17:17:30 UTC; 52s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 2929 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 2853 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 2931 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─2931 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Arranque automático

Con el siguiente comando establecemos que el servicio de MySQL se inicie junto con el SO

$ sudo systemctl enable mysqld

Puede comprobar si el servicio de MySQL se inicia con el SO ejecutando:

$ sudo systemctl is-enabled mysqld
enabled

Para deshabilitar que el servicio MySQL inicie con el SO ejecutamos:

$ sudo systemctl disable mysqld

Seguridad básica MySQL

Después de ejecutar los pasos anteriores debemos garantizar una segurida básica, para ello ejecutamos el script (Cuando el script le solicite el «password for root» debe usar la clave temporal generada por el servidor MySQL):

$ mysql_secure_installation 
Securing the MySQL server deployment.

Enter password for user root: 

The existing password for the user account root has expired. Please set a new password.

New password: 

Re-enter new password: 
 ... Failed! Error: Your password does not satisfy the current policy requirements

New password: 

Re-enter new password: 
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

Ahora ya podemos conectarnos al servidor MySQL usando la nueva clave:

$ mysql -u root -p

La configuración principal del servidor MySQL la puede encontrar en /etc/my.cnf y las configuraciones complementarias en: /etc/my.cnf.d/

Video asociado al artículo

YouTube video

Administrar MySQL desde la línea de comandos, 18 (18)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.