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
Administrar MySQL desde la línea de comandos, 18 (18)
- Cómo instalar MySQL 8.0 en Ubuntu 20.04
- Como instalar MySQL 8.0 en Debian
- Cómo instalar MariaDB en Alpine Linux
- Cómo instalar MariaDB en NetBSD
- MySQL 8.0, cambiar contraseña de root
- ¿Cómo mostrar variables del sistema en MySQL?
- Deshabilitar innodb engine en mysql
- Administrar servidor MySQL – Básico
- Motores de almacenamiento disponibles/habilitados en MySQL
- MySQL: Recuperar la clave (password) de root
- MySQL Administración de usuarios
- MySQL ejecutar script SQL
- Copias de seguridad (Backup) en MySQL
- Crear / Modificar / Eliminar tablas en MySQL
- Connectarse a MySQL desde la LAN
- Character set disponibles en MySQL
- MySQL no puede escribir en el dir /tmp
- Cómo instalar MySQL 5.7 en CentOS 7