Guía de instalación y configuración de MySQL 5.7 en CentOS 7

Preparación del repositorio oficial

Para comenzar la instalación de MySQL 5.7 en un sistema CentOS, es necesario descargar e integrar el repositorio oficial de la comunidad de MySQL. Utilice el siguiente comando para obtener el paquete de configuración:

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

Una vez descargado, proceda a instalar el gestor de paquetes RPM para habilitar los espejos de descarga:

sudo rpm -ivh mysql57-community-release-el7-11.noarch.rpm

Instalación del servidor MySQL

Con el repositorio ya configurado, ejecute el instalador de YUM para descargar los binarios del servidor:

sudo yum install -y mysql-community-server

Gestión del servicio de base de datos

Tras completar la instalación, es fundamental inicializar el servicio. Se recomienda utilizar systemctl para la gestión de procesos en CentOS 7:

# Iniciar el motor de base de datos
sudo systemctl start mysqld

# Verificar el estado actual del servicio
sudo systemctl status mysqld

Para asegurar la compatibilidad con sistemas Windows y estandarizar la codificación, se sugiere editar el archivo /etc/my.cnf y añadir lo siguiente bajo las secciones correspondientes:

[mysqld]
lower_case_table_names=1

[mysql]
default-character-set=utf8

Configuración de seguridad inicial

MySQL 5.7 genera una contraseña aleatoria para el usuario administrador durante el primer arranque. Esta se almacena en el registro de errores. Puede extraerla con el siguiente comando:

sudo grep 'temporary password' /var/log/mysqld.log

Acceda a la consola de comandos utilizando la clave obtenida:

mysql -u root -p

Debido a las políticas de seguridad por defecto, si desea establecer una contraseña sencilla para entornos de desarrollo, debe modificar las variables globales de validación antes de cambiar la clave:

-- Reducir la restricción de la política de contraseñas
SET GLOBAL validate_password_policy=0;
SET GLOBAL validate_password_length=4;

-- Actualizar la contraseña del usuario root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'admin_123';
FLUSH PRIVILEGES;

Configuración de acceso remoto

Si requiere conectar herramientas externas al servidor, debe otorgar permisos específicos. En este ejemplo, crearemos un acceso universal para el usuario administrador (tenga en cuenta las implicaciones de seguridad):

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'admin_123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Gestión de registros y logs

Para monitorear el rendimiento y las consultas lentas, añada estas directiavs en su archivo de configuración /etc/my.cnf dentro de la sección [mysqld]:

# Activación del log general
general_log=1
general_log_file=/var/log/mysql_general.log

# Configuración de consultas lentas
slow_query_log=1
slow_query_log_file=/var/log/mysql_slow_queries.log
long_query_time=3
log_output='FILE'

Es indispensable que el usuario del sistema bajo el cual corre MySQL tenga permisos de escritura sobre estos archivos:

sudo touch /var/log/mysql_general.log /var/log/mysql_slow_queries.log
sudo chown mysql:mysql /var/log/mysql_*.log
sudo chmod 660 /var/log/mysql_*.log
sudo systemctl restart mysqld

Recuperación de acceso (Reset de contraseña)

En caso de pérdida de accceso total, puede reiniciar el servidor omitiendo las tablas de privilegios de la siguiente manera:

# Detener servicio y configurar modo bypass
sudo systemctl stop mysqld
sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
sudo systemctl start mysqld

# Entrar sin credenciales
mysql -u root

# Ejecutar actualización manual
UPDATE mysql.user SET authentication_string = PASSWORD('NuevaClaveSegura2024') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
exit;

# Restaurar el servicio a la normalidad
sudo systemctl unset-environment MYSQLD_OPTS
sudo systemctl restart mysqld

Etiquetas: MySQL centos Database-Administration SQL Linux-Server

Publicado el 7-1 23:20