Instalación y gestión de contraseñas de MySQL 5.7 en Ubuntu 22.04 LTS

Introducción y consideraciones técnicas

MySQL 5.7 sigue siendo una opción viable para sistemas heredados que requieren estabilidad y compatibilidad específica. Sin embargo, en Ubuntu 22.04 LTS, su instalación presenta desafíos únicos, ya que los repositorios predeterminados no incluyen esta versión. Este documento detalla el proceso completo de instalación, conifguración de autenticación y solución de problemas comunes.

Configuración del repositorio e instalación

Para acceder a los paquetes de MySQL 5.7, es necesario incorporar el repositorio oficial de MySQL. Descargue el paquete de configuración e instálelo:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb

Durante la instalación del paquete, seleccione las opciones "MySQL Server & Cluster" y "mysql-5.7". Actualice los índices de paquetes posteriormente:

sudo apt update

Proceda a instalar el serivdor MySQL 5.7:

sudo apt install mysql-server-5.7

El instalador solicitará una contraseña para el usuario root. En caso de omitirla, se generará una credencial aleatoria almacenada en los registros del sistema.

Administración y restablecimiento de contraseñas

Acceso con contraseña establecida

Si definió una contraseña durante la instalación, utilice el siguiente comando:

mysql -u root -p

Restablecimiento de credenciales perdidas

Siga este procedimiento para recuperar el acceso al usuario root:

  1. Detenga el servicio de MySQL:
sudo systemctl stop mysql
  1. Inicie el servidor en modo seguro, desactivando la verificación de privilegios:
sudo mysqld_safe --skip-grant-tables &
  1. Conéctese al servidor MySQL sin autenticación:
mysql -u root
  1. Dentro del intérprete de MySQL, actualice la contraseña utilizando un método moderno:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'nueva_clave_segura';
FLUSH PRIVILEGES;
  1. Reinicie el servicio normal:
sudo systemctl restart mysql

Corrección de problemas de plugin de autenticación

Si aparece un error relacionado con "caching_sha2_password", cambie el mecanismo de autenticación:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'tu_clave_actual';
FLUSH PRIVILEGES;

Solución a inconvenientes frecuentes

Conexión al servidor MySQL

El error "Can't connect to local MySQL server through socket" indica que el servicio no está activo. Verifique su estado con:

systemctl status mysql

Si está detenido, inícielo con sudo systemctl start mysql. Revise el registro de errores en /var/log/mysql/error.log para diagnósticos adicionales.

Problemas de permisos

El mensaje "Access denied for user 'root'@'localhost'" sugiere credenciales incorrectas. Asegúrese de usar la contraseña adecuada o siga el proceso de restablecimiento. Puede inspeccionar los usuarios con:

SELECT Host, User FROM mysql.user;

Hardening y mejores prácticas

Ejecute el asistente de seguridad incluido con MySQL:

sudo mysql_secure_installation

Este script facilita la configuración de contraseñas robustas, la eliminación de usuarios anónimos y la restricción del acceso remoto para el usuario root.

Operaciones rutinarias de gestión

  • Control del servicio: sudo systemctl start|stop|restart mysql
  • Verificar la versión instalada: SELECT VERSION();
  • Listar bases de datos: SHOW DATABASES;
  • Crear un nuevo usuario: CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'clave_app';
  • Asignar privilegios: GRANT ALL PRIVILEGES ON mi_base.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES;

Ajustes de rendimiento iniciales

Edite el archivo de configuración principal para optimizar el comportamiento básico:

sudo nano /etc/mysql/my.cnf

En la sección [mysqld], modifique los siguientes parámetros según los recursos del sistema:

innodb_buffer_pool_size = 1G  # Aproximadamente el 50-70% de la RAM disponible
innodb_log_file_size = 256M
max_connections = 100
query_cache_size = 64M
query_cache_type = 1

Aplique los cambios reiniciando el servicio. Se recomienda validar estas configuraciones en un entorno de pruebas antes de implementarlas en producción.

Estrategias de respaldo y restauración

Copia de seguridad con mysqldump

Para respaldar todas las bases de datos:

mysqldump -u root -p --all-databases > backup_total.sql

Para una base de datos específica:

mysqldump -u root -p nombre_base > backup_especifico.sql

Restauración de datos

Para importar desde un archivo de respaldo:

mysql -u root -p < archivo_backup.sql

Automatización mediante cron

Cree un script de respaldo periódico. Ejemplo en /usr/local/bin/mysql_backup_auto.sh:

#!/bin/bash
HORA=$(date +%Y%m%d%H%M)
mysqldump -u root -pclave_root --all-databases > /var/backups/mysql_$HORA.sql
find /var/backups -type f -name "*.sql" -mtime +7 -exec rm {} \;

Asigne permisos de ejecución y programe la tarea con crontab para ejecución diaria a las 2:00 AM:

sudo chmod +x /usr/local/bin/mysql_backup_auto.sh
sudo crontab -e
# Añadir línea: 0 2 * * * /usr/local/bin/mysql_backup_auto.sh

Monitoreo y análisis de registros

Habilitación del registro de consultas lentas

Active esta característica editando el archivo de configuración:

sudo nano /etc/mysql/my.cnf

Agregue las siguientes directivas:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

Reinicie el servicio para aplicar los cambios.

Consultas de estado útiles

  • Procesos activos: SHOW PROCESSLIST;
  • Variables de configuración: SHOW VARIABLES;
  • Métricas de estado: SHOW STATUS;

Consideraciones para actualización futura

Aunque MySQL 5.7 funcione adecuadamente, es prudente planificar la migración a versiones más recientes como MySQL 8.0. Antes de proceder, asegúrese de realizar copias de seguridad completas, evaluar la compatibilidad de su aplicación y revisar las guías de actualización oficiales para minimizar interrupciones.

Etiquetas: MySQL Ubuntu 22.04 LTS MySQL 5.7 gestión de contraseñas administración de bases de datos

Publicado el 7-17 19:48