Creación de Directorios para Software
En el directorio /root de Linux, crear una carpeta 'software' para almacenar los paquetes de instalación:
[root@localhost ~]# mkdir software
[root@localhost ~]# ll
total 4
-rw-------. 1 root root 1595 Sep 21 2025 anaconda-ks.cfg
drwxr-xr-x 2 root root 6 Abr 2 11:28 software
Creación del Directorio de Aplicación
Crear un directorio '/aplicacion' en el directorio raíz para la instalación de MySQL y otras aplicaciones:
[root@localhost ~]# mkdir /aplicacion
Instalación de MySQL (Método Binario)
Creación del Usuario MySQL
Primero, verificar si el usuario 'mysql' existe:
[root@localhost ~]# id mysql
id: mysql: no such user
Si no existe, crear el usuario con las siguientes restricciones:
[root@localhost ~]# useradd -s /sbin/nologin -M mysql
Parámetros: -s /sbin/nologin impide que el usuario inicie sesión; -M no crea automáticamente el directorio home.
Extracción del Paquete de Instalación
Descomprimir el archivo binario de MySQL:
[root@localhost software]# tar -vxf mysql-5.7.35-linux-glibc2.12-x86_64.tar.gz
Mover la carpeta descomprimida al directorio de aplicaciones y renombrarla:
[root@localhost software]# mv mysql-5.7.35-linux-glibc2.12-x86_64 /aplicacion/mysql-5.7.35
Crear un enlace simbólico para facilitar futuras actualizaciones:
[root@localhost software]# ln -s /aplicacion/mysql-5.7.35/ /aplicacion/mysql
Verificar la estructura del directorio:
[root@localhost software]# cd /aplicacion/
[root@localhost aplicacion]# ll
total 0
lrwxrwxrwx 1 root root 26 Abr 2 11:45 mysql -> /aplicacion/mysql-5.7.35/
drwxr-xr-x 9 root root 129 Abr 2 11:41 mysql-5.7.35
Crear un directorio 'data' para almacenar los datos de la base de datos:
[root@localhost mysql]# mkdir /aplicacion/mysql/data
Inicialización de la Base de Datos
Ejecutar el siguiente comando para inicializar la base de datos:
[root@localhost mysql]# /aplicacion/mysql/bin/mysqld --initialize --basedir=/aplicacion/mysql/ --datadir=/aplicacion/mysql/data/ --user=mysql
Importante: Anote la contraseña temporal generada (ej: zBc*m?G7yxd+), necesitará usarla para el primer inicio de sesión.
Permisos para el Usuario MySQL
Asignar los permisos adecuados al usuario MySQL:
[root@localhost mysql]# chown -R mysql.mysql /aplicacion/mysql-5.7.35
Parámetros: -R o --recursive: procesa recursivamente todos los archivos y subdirectorios.
Generación del Archivo de Configuración
Realizar una copia de seguridad del archivo de configuración predeterminado:
[root@localhost mysql]# mv /etc/my.cnf /etc/my.cnf.bak
Crear un nuevo archivo de configuración:
[root@localhost mysql]# vim /etc/my.cnf
Contenido del archivo de configuración:
[mysql] # Establecer el juego de caracteres predeterminado para el cliente MySQL
default-character-set=utf8
[mysqld] skip-name-resolve
# Establecer el puerto 3306
port = 3306
# Establecer el directorio de instalación de MySQL
basedir=/aplicacion/mysql
# Establecer el directorio de almacenamiento de datos de MySQL
datadir=/aplicacion/mysql/data
# Permitir el número máximo de conexiones
max_connections=200
# El servidor utiliza por defecto el juego de caracteres latin1 de 8 bits
character-set-server=utf8
# Motor de almacenamiento predeterminado al crear nuevas tablas
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
Problemas Comunes: Comando vim no Disponible y Repositorio yum Inactivo
Si al ejecutar vim aparece el error -bash: vim: command not found, es necesario instalar vim:
[root@localhost mysql]# yum -y install vim
Posible problema: durante la instalación puede aparecer el error Cannot find a valid baseurl for repo: base/7/x86_64.
Causa: A partir del 30 de junio de 2024, el repositorio oficial de CentOS 7 ha dejado de recibir mantenimiento, por lo que el baseurl predeterminado no es accesible.
Solución: modificar manualmente la configuración del repositorio:
(1) Comentar mirrorlist y habilitar el repositorio vault:
[root@localhost mysql]# sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@localhost mysql]# sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
(2) Limpiar la caché:
[root@localhost mysql]# sudo yum clean all && sudo yum makecache
(3) Alternativa: cambiar al espejo de Alibaba Cloud:
a. Hacer una copia de seguridad del archivo original CentOS-Base.repo:
[root@localhost mysql]# cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
b. Descargar el espejo de Alibaba Cloud en /etc/yum.repos.d/:
[root@localhost mysql]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
c. Limpiar la caché nuevmaente:
[root@localhost mysql]# sudo yum clean all && sudo yum makecache
Inicio y Configuración de MySQL
Modificación de la Ruta del Script de Inicio
La ruta de instalación predeterminada del paquete binario de MySQL es /usr/local/mysql, que necesita ser modificada a la ruta real:
[root@localhost mysql]# sed -i 's#/usr/local/mysql#/aplicacion/mysql#g' /aplicacion/mysql/bin/mysqld_safe
Inicio de MySQL
Iniciar MySQL en segundo plano:
[root@localhost mysql]# /aplicacion/mysql/bin/mysqld_safe &
El símbolo & indica que se ejecuta en segundo plano. Si aparece un mensaje similar a la imagen siguiente, el inicio fue exitoso.
Configuración de Variables de Entorno
Añadir MySQL al PATH del sistema:
[root@localhost mysql]# echo "PATH=/aplicacion/mysql/bin:$PATH">>/etc/profile
[root@localhost mysql]# source /etc/profile
Verificar las variables de entorno:
[root@localhost mysql]# echo $PATH
Prueba de Conexión
Conectar usando la contraseña temporal:
[root@localhost mysql]# mysql -uroot -pzBc*m?G7yxd+
Donde zBc*m?G7yxd+ es la contraseña generada durante la inicialización.
Modificación de la Contraseña de Root
Establecer una nueva contraseña para el usuario root:
mysql> set password=password('nueva_contraseña');
Habilitar Acceso Remoto
Permitir conexiones remotas al usuario root:
mysql> grant all privileges on *.* to 'root'@'%' identified by 'nueva_contraseña';
mysql> flush privileges;
Configuración del Firewall
Verificar el estado del firewall:
[root@localhost mysql]# systemctl status firewalld.service
Cierre temporal del firewall:
[root@localhost mysql]# systemctl stop firewalld.service
Cierre permanente del firewall:
[root@localhost mysql]# systemctl disable firewalld.service
Configuración del Inicio Automático de MySQL (Opcional)
Script de inicio de MySQL: /aplicacion/mysql/support-files/mysql.server
(1) Copiar el script de inicio al directorio /etc/init.d/ y renombrarlo a mysqld:
[root@localhost mysql]# cp /aplicacion/mysql/support-files/mysql.server /etc/init.d/mysqld
(2) Reemplazar las rutas predeterminadas en el archivo de inicio:
[root@localhost mysql]# sed -i 's#/usr/local/mysql#/aplicacion/mysql#g' /etc/init.d/mysqld
(3) Dar permisos de ejecución al archivo:
[root@localhost mysql]# chmod +x /etc/init.d/mysqld
(4) Detener los procesos de MySQL en ejecución:
Verificar procesos de MySQL:
[root@localhost mysql]# ps aux |grep mysql
Matar los procesos:
[root@localhost mysql]# kill -9 ID_del_proceso_mysql
(5) Reiniciar el servicio MySQL:
[root@localhost mysql]# /etc/init.d/mysqld start
(6) Agregar MySQL a los servicios de inicio automático:
[root@localhost mysql]# chkconfig mysqld on
Creación de la Base de Datos para JForum
(1) Conectar a MySQL:
[root@localhost software]# mysql -uroot -pnueva_contraseña
(2) Crear la base de datos JForum:
mysql> CREATE DATABASE jforum CHARACTER SET utf8;
(3) Crear un usuario y asignar permisos:
mysql> GRANT ALL PRIVILEGES ON *.* TO jforum_usuario@"%" IDENTIFIED BY 'contraseña_segura' WITH GRANT OPTION;
Desglose del comando SQL:
| Parte | Significado |
|---|---|
GRANT ALL PRIVILEGES |
Concede todos los permisos (SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, etc.) |
ON *.* |
El primer * representa todas las bases de datos, el segundo * representa todas las tablas. Es decir: todas las bases de datos y tablas del servidor MySQL |
TO jforum_usuario@"%" |
jforum_usuario es el nombre de usuario, % es un comodín que permite conexiones desde cualquier dirección IP (local, remota, etc.) |
IDENTIFIED BY 'contraseña_segura' |
Establece la contraseña del usuario (si el usuario no existe, se crea automáticamente) |
WITH GRANT OPTION |
Permite que este usuario otorgue sus permisos a otros usuarios |
Advertencia de seguridad: Este comando es peligroso en entornos de producción porque:
- Crea efectivamente otro usuario con privilegios de root
- Permite conexiones desde cualquier IP (vulnerable a ataques de fuerza bruta)
- La contraseña es demasiado simple
Solo se recomienda su uso en entornos de prueba locales o entornos de prueba completamente aislados.
(4) Actualizar los permisos:
mysql> flush privileges;
(5) Verificar si la base de datos JForum se creó correctamente:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jforum |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 filas en el conjunto (0.01 seg)