Para instalar MySQL en un servidor Linux, actualice su índice de paquetes, instale el MySQL Paquete del servidor, inicie y habilite el servicio, ejecute mysql_secure_installation para reforzar la seguridad y cree una base de datos y un usuario. En Ubuntu/Debian, use apt; en RHEL/CentOS/Rocky/AlmaLinux, use dnf/yum o el gestor de paquetes oficial. MySQL repositorio para la última versión.
La instalación de MySQL En un servidor Linux es sencillo si sigues los pasos correctos. En esta guía, aprenderás cómo instalar MySQL en distribuciones basadas en Ubuntu/Debian y RHEL, asegúrelo para producción, habilitar acceso remoto, ajuste el rendimiento básico y verifique que todo funcione correctamente mediante comandos que pueda copiar y ejecutar de forma segura. Este tutorial refleja prácticas reales utilizadas en servidores cliente en YouStable.
Requisitos previos y requisitos del sistema
Antes de comenzar, asegúrese de que su servidor Linux cumpla con los requisitos básicos y tenga el acceso adecuado.
- Privilegios de root o sudo en el servidor.
- Distribuciones compatibles: Ubuntu 20.04/22.04/24.04; Debian 11/12; RHEL/CentOS 7/8/9; Rocky/AlmaLinux 8/9.
- Acceso de red a los repositorios de paquetes y al puerto 3306 (si se conectarán clientes remotos).
- Al menos 1 GB RAM Para cargas de trabajo pequeñas; se recomiendan 2 GB o más para producción.
- Hora precisa del servidor (NTP) para evitar problemas de replicación/TLS.
Elige el correcto MySQL Edición y repositorio
La mayoría de los repositorios de Linux proporcionan MySQL o MariaDB. Para obtener la información más reciente MySQL 8 características, considere el oficial MySQL Repositorio. Si se prefiere la estabilidad con la integración de la distribución, utilice los repositorios predeterminados. Decida en función de los requisitos de la aplicación, la compatibilidad de los controladores y los objetivos de mantenimiento a largo plazo.
MySQL vs. MariaDB (Análisis rápido)
- MySQL 8.0: JSON robusto, funciones de ventana, roles, autenticación predeterminada caching_sha2_password, centrado en InnoDB.
- MariaDB: bifurcación impulsada por la comunidad, a menudo se envía de manera predeterminada en distribuciones similares a RHEL, con características y variables del sistema ligeramente diferentes.
- Consejo: Adapte su elección a los requisitos de la aplicación. No todas las funciones y comportamientos de replicación son compatibles.
Instale MySQL en Ubuntu/Debian
En las distribuciones basadas en Debian, puedes instalar el repositorio predeterminado MySQL servidor (a menudo MySQL 8 en versiones más recientes de Ubuntu) o utilice el repositorio APT de Oracle para la última versión GA.
Opción A: Instalar MySQL desde los repositorios de Ubuntu/Debian
sudo apt update
sudo apt install -y mysql-server
sudo systemctl enable --now mysql
sudo systemctl status mysql --no-pagerEjecute el script de instalación segura para establecer una contraseña root, eliminar bases de datos de prueba y no permitir usuarios anónimos:
sudo mysql_secure_installationDependiendo de la distribución, la MySQL El usuario root puede autenticarse a través de un socket (sin contraseña) o mediante una contraseña. Si necesita autenticación de contraseña, configúrelo explícitamente después de iniciar sesión con sudo:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'StrongRootPass#2025';
FLUSH PRIVILEGES;
EXIT;Opción B: Instalar la última versión MySQL 8 a través del repositorio APT oficial
Para el más reciente MySQL lanzamiento GA y herramientas como MySQL Shell, utilice el repositorio APT de Oracle:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb # Select MySQL Server & Tools
sudo apt update
sudo apt install -y mysql-server
sudo systemctl enable --now mysqlReemplace la versión del paquete de configuración APT con la última versión de dev.mysql.com. Luego, ejecute la instalación segura como se mostró anteriormente.
Instale MySQL en RHEL/CentOS/Rocky/AlmaLinux
Los sistemas tipo RHEL pueden incluir MariaDB por defecto. Para asegurarse de que está instalando MySQL, utilizar el MySQL Repositorio Yum o el módulo AppStream, si está disponible.
Opción A: Utilizar el oficial MySQL Repositorio Yum/DNF
# Download and install the MySQL repo package (example for EL8/EL9)
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf module disable -y mysql mariadb || true
sudo dnf clean all
sudo dnf install -y mysql-community-server
sudo systemctl enable --now mysqld
sudo systemctl status mysqld --no-pagerEn el primer arranque, MySQL Es posible que se genere una contraseña de root temporal en el registro. Recupérela y luego ejecute la instalación segura:
sudo grep 'temporary password' /var/log/mysqld.log
sudo mysql_secure_installationOpción B: Usar el módulo AppStream (Si MySQL 8 está disponible)
sudo dnf module list mysql
sudo dnf module enable -y mysql:8.0
sudo dnf install -y @mysql
sudo systemctl enable --now mysqldConfirme que el servicio esté ejecutándose y asegúrelo como se indica arriba.
Configuración inicial y mejores prácticas
Crear una base de datos y un usuario con privilegios mínimos
Utilice un usuario dedicado por aplicación con privilegios mínimos. Reemplace los marcadores de posición con sus valores.
sudo mysql -u root -p
-- Inside MySQL shell:
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongAppPass#2025';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;Consideraciones sobre el complemento de autenticación
MySQL El valor 8 utiliza por defecto caching_sha2_password. Algunos clientes antiguos solo admiten mysql_native_password. Si es necesario, configúrelo por usuario (no globalmente) para evitar debilitar la seguridad de todas las cuentas.
ALTER USER 'appuser'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'StrongAppPass#2025';
FLUSH PRIVILEGES;Habilitar acceso remoto (opcional)
Permitir el acceso remoto solo cuando sea necesario y restringirlo por IP. Actualizar la dirección de enlace y el firewall según corresponda.
- Archivo de configuración de Ubuntu/Debian: /etc/mysql/mysql.conf.d/mysqld.cnf
- Archivo de configuración similar a RHEL: /etc/my.cnf o /etc/my.cnf.d/mysqld.cnf
# In the [mysqld] section:
bind-address = 0.0.0.0
# or comment the bind-address line to listen on all interfacesReanudación MySQL y cree un usuario restringido a la IP de su servidor de aplicaciones:
sudo systemctl restart mysql # Ubuntu/Debian
# or
sudo systemctl restart mysqld # RHEL-like
sudo mysql -u root -p
CREATE USER 'appuser'@'203.0.113.10' IDENTIFIED BY 'StrongAppPass#2025';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'203.0.113.10';
FLUSH PRIVILEGES;
EXIT;Abra el puerto 3306 del firewall (si se necesita acceso remoto)
# UFW (Ubuntu):
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
# firewalld (RHEL-like):
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port protocol="tcp" port="3306" accept' --permanent
sudo firewall-cmd --reloadUtilice la lista de direcciones IP permitidas en lugar de abrir el puerto 3306 al mundo. Si SELinux está en modo de aplicación, permita MySQL para conectarse a través de la red cuando sea pertinente:
# Example SELinux adjustment (if needed for network access):
sudo setsebool -P mysql_connect_any 1Verifique la instalación y solucione problemas rápidamente
Comprobar la versión y el estado del servicio
mysql --version
systemctl status mysql # Ubuntu/Debian
systemctl status mysqld # RHEL-like
# Connect and show databases
mysql -u root -p -e "SHOW DATABASES;"Registros y problemas comunes
- Archivos de registro: /var/log/mysql/error.log (Ubuntu/Debian), /var/log/mysqld.log (similar a RHEL).
- Puerto en uso: asegúrese de que ningún otro servicio esté vinculado a 3306 (use ss -lntp | grep 3306).
- Errores de autenticación: confirme el complemento, el host (por ejemplo, localhost frente a %) y la contraseña correctos.
- Memoria: para servidores pequeños, reduzca el tamaño de los búferes para evitar interrupciones por falta de memoria.
Ajuste básico del rendimiento (valores predeterminados seguros)
Comience de forma conservadora con servidores pequeños y ajústelos según la carga de trabajo y el registro de consultas lento.
# Add to mysqld section (paths differ by distro)
innodb_buffer_pool_size = 512M
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
max_connections = 200
thread_cache_size = 50
query_cache_type = 0 # MySQL 8 ignores query cache; ensure disabled
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1Después de realizar los cambios, reinicie. MySQL y supervise el rendimiento mediante SHOW GLOBAL STATUS, los registros de actividad lenta y los tiempos de respuesta de la aplicación.
Copias de seguridad y mantenimiento
Copias de seguridad lógicas (mysqldump/mysqlpump)
# Backup one database
mysqldump -u root -p --routines --triggers --single-transaction appdb > appdb_$(date +%F).sql
# Restore
mysql -u root -p appdb < appdb_YYYY-MM-DD.sqlPara conjuntos de datos grandes o recuperación en un momento específico, considere MySQL Copia de seguridad empresarial o Percona XtraBackup (copias de seguridad físicas). Pruebe siempre las restauraciones.
Actualizaciones y parches
- Programe ventanas de mantenimiento para actualizaciones de versiones menores.
- Haga una copia de seguridad antes de aplicar el parche.
- Ubuntu/Debian: sudo apt update y sudo apt upgrade.
- Similar a RHEL: sudo dnf update o sudo yum update.
- Revise las notas de la versión para ver los cambios de autenticación o replicación.
Seguro MySQL para la producción
- Ejecute mysql_secure_installation y configure contraseñas seguras y únicas.
- Deshabilitar el inicio de sesión root remoto; crear usuarios administradores restringidos por IP.
- Utilice TLS para las conexiones de cliente (configure ssl_cert, ssl_key, ssl_ca en mysqld).
- Otorgar privilegios mínimos; evitar CONCEDER TODOS en *.* para los usuarios de la aplicación.
- Rotar credenciales y eliminar cuentas/bases de datos no utilizadas.
- Habilite el registro de consultas lentas y revíselo periódicamente.
Ejemplo del mundo real: Aplicación + base de datos en servidores separados
- Crear un usuario de aplicación restringido a la IP del servidor de aplicaciones.
- Abra el puerto 3306 sólo para esa IP (UFW o firewalld).
- aglutinante MySQL a 0.0.0.0 y aplicar TLS para el tráfico de producción.
- Supervisar las conexiones con performance_schema y los inicios de sesión en los registros de errores.
- Establezca una hora de servidor consistente (NTP) para obtener registros y copias de seguridad precisos.
Cuándo elegir hosting administrado o ayuda experta
Si prefiere centrarse en su aplicación que en el mantenimiento de la base de datos, considere manageservidores d o hosting optimizado. YouStableLos planes de alojamiento de están optimizados para MySQLAplicaciones basadas en e incluyen orientación sobre configuración segura, optimización del rendimiento y estrategia de copia de seguridad, ideales para WordPress, pilas LAMP/LEMP y cargas de trabajo SaaS.
Hoja de trucos de comando completa
# Ubuntu/Debian quick install
sudo apt update && sudo apt install -y mysql-server
sudo systemctl enable --now mysql
sudo mysql_secure_installation
# RHEL/CentOS/Rocky/Alma quick install (MySQL repo)
sudo dnf install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
sudo dnf module disable -y mysql mariadb || true
sudo dnf install -y mysql-community-server
sudo systemctl enable --now mysqld
sudo mysql_secure_installation
# Create DB and user
sudo mysql -u root -p -e "
CREATE DATABASE appdb;
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongAppPass#2025';
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';
FLUSH PRIVILEGES;"
# Open firewall for one host (examples)
sudo ufw allow from 203.0.113.10 to any port 3306 proto tcp
sudo firewall-cmd --add-rich-rule='rule family="ipv4" source address="203.0.113.10" port protocol="tcp" port="3306" accept' --permanent
sudo firewall-cmd --reloadPreguntas frecuentes: Instalación MySQL en un servidor Linux
¿Cómo instalo MySQL ¿En Ubuntu?
Ejecuta sudo apt update, luego sudo apt install -y mysql-server. Habilita e inicia el servicio con sudo systemctl enable –now mysql. Finalmente, protégelo con sudo mysql_secure_installation. Para la versión más reciente MySQL 8. Añada el repositorio APT de Oracle desde dev.mysql.com antes de la instalación.
Cual es el defecto MySQL ¿Contraseña de root en Linux?
En Ubuntu/Debian, el usuario root puede autenticarse a través de un socket (sin contraseña) o solicitarle que establezca una durante mysql_secure_installation. En sistemas tipo RHEL que utilizan el MySQL En el repositorio, se registra una contraseña de root temporal en /var/log/mysqld.log después del primer inicio.
¿Cómo habilito las conexiones remotas a? MySQL?
Editar MySQL Configure para que escuche en 0.0.0.0 (bind-address), agregue un usuario restringido a la IP de su cliente y abra el puerto 3306 en el firewall solo para esa IP. Reinicie. MySQL y prueba con mysql -h DB_HOST -u USER -p. Siempre evita exponer el puerto 3306 públicamente.
Is MySQL ¿O es mejor MariaDB para servidores Linux?
Ambos son sólidos. Elige MySQL MariaDB ofrece las últimas funciones compatibles con Oracle y una amplia compatibilidad con el ecosistema. Si prefiere el desarrollo impulsado por la comunidad o si es la opción predeterminada en su distribución, elija MariaDB. Verifique la compatibilidad de los controladores de su aplicación antes de cambiar.
¿Cómo puedo eliminarlo por completo? MySQL ¿Desde Linux?
En Ubuntu/Debian: sudo apt purge -y mysql-server mysql-common; luego, sudo apt autoremove -y y elimine los datos residuales en /var/lib/mysql (después de las copias de seguridad). En sistemas similares a RHEL: sudo dnf remove -y mysql* y limpie los archivos de configuración restantes; luego, elimine /var/lib/mysql si corresponde.
¿Cómo reinicio una cuenta perdida? MySQL ¿Contraseña de root?
Parada MySQL, inícielo con –skip-grant-tables, conéctese sin contraseña, actualice el root contraseña del usuarioLuego, reinicia normalmente. Sigue las instrucciones oficiales. MySQL 8. Documentación con los pasos exactos para tu distribución. Asegúrate de restringir el acceso al servidor durante el proceso.
¿Qué puerto tiene? MySQL ¿Lo uso y debería cambiarlo?
MySQL Utiliza el puerto TCP 3306. Puede cambiarlo, pero la seguridad debe basarse en una autenticación robusta, TLS, cortafuegos y listas blancas de direcciones IP. Si cambia el puerto, actualice los cortafuegos, SELinux y las cadenas de conexión de la aplicación en consecuencia.
Con estos pasos, podrá instalar con confianza. MySQL en un servidor Linux, protéjalo y prepárelo para cargas de trabajo de producción. Si desea un alojamiento respaldado por expertos que esté optimizado para MySQL y wordpress, YouStable Puede ayudarle a implementar, optimizar y mantener su pila con las mejores prácticas desde el primer día.
