Conocer la versión exacta de MySQL que estás ejecutando es información que necesitarás constantemente. La versión determina qué funciones están disponibles, qué sintaxis se soporta, qué bugs están presentes y qué parches de seguridad se han aplicado. Cuando buscas documentación, reportas un problema o planificas una migración, el número de versión es el punto de partida. MySQL ofrece varias formas de consultarlo, cada una útil en diferentes contextos.

SELECT VERSION()

La forma más directa y la que usarás con más frecuencia es la función VERSION():

SELECT VERSION();
VERSION()
8.0.36

El resultado sigue el formato mayor.menor.parche. En este caso, 8 es la versión mayor, 0 es la versión menor y 36 es el número de parche. Las versiones menores (8.0, 8.1, 8.2, etc.) pueden incluir nuevas funcionalidades, mientras que los parches (8.0.35, 8.0.36, etc.) son correcciones de bugs y parches de seguridad dentro de la misma versión menor.

Algunos servidores muestran información adicional en el string de versión:

-- En una distribución comunitaria
SELECT VERSION();
-- Resultado: 8.0.36
 
-- En MySQL Enterprise
SELECT VERSION();
-- Resultado: 8.0.36-commercial
 
-- En MariaDB (un fork de MySQL)
SELECT VERSION();
-- Resultado: 10.11.6-MariaDB

Variables de versión

Para obtener información más detallada, MySQL expone varias variables relacionadas con la versión:

SHOW VARIABLES LIKE 'version%';
Variable_nameValue
version8.0.36
version_commentMySQL Community Server
version_compile_machinex86_64
version_compile_osLinux

Cada variable proporciona un aspecto diferente.

La variable version es el número de versión puro. La variable version_comment indica la edición del servidor (Community Server, Enterprise, etc.). Las variables version_compile_machine y version_compile_os indican la arquitectura y el sistema operativo para los que se compiló el binario.

Puedes consultar estas variables individualmente:

SELECT
  @@version AS version,
  @@version_comment AS edicion,
  @@version_compile_os AS sistema_operativo;
versionedicionsistema_operativo
8.0.36MySQL Community ServerLinux

Desde la línea de comandos

Para conocer la versión sin necesidad de conectarte al servidor, puedes usar la opción --version de los binarios de MySQL:

mysql --version
mysql  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)
mysqld --version
/usr/sbin/mysqld  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)
mysqladmin --version
mysqladmin  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)

Estos comandos leen la versión del binario instalado en disco, no del servidor en ejecución. Si has actualizado los binarios pero aún no has reiniciado el servidor, el binario en disco y el servidor en ejecución pueden tener versiones diferentes. Para saber con certeza la versión del servidor que está corriendo, usa mysqladmin con una conexión real:

mysqladmin -u root -p version
Server version          8.0.36
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/lib/mysql/mysql.sock
Uptime:                 12 days 6 hours 30 min 15 sec
Threads: 4  Questions: 892341  Slow queries: 12
Opens: 540  Flush tables: 3  Open tables: 120
Queries per second avg: 0.842

Este comando muestra la versión del servidor en ejecución junto con estadísticas útiles.

Caso práctico: verificar compatibilidad de funciones

Antes de usar una función que fue introducida en una versión específica, es buena práctica verificar la versión. Por ejemplo, JSON_TABLE() se introdujo en MySQL 8.0.4, y las expresiones CTE (Common Table Expressions) en MySQL 8.0. Si tu servidor es MySQL 5.7, estas funciones no estarán disponibles.

-- Verificar si la versión soporta CTEs (requiere 8.0+)
SELECT
  CASE
    WHEN @@version >= '8.0' THEN 'CTEs soportadas'
    ELSE 'CTEs NO soportadas (requiere MySQL 8.0+)'
  END AS compatibilidad;
compatibilidad
CTEs soportadas

Para un chequeo más robusto, puedes usar la función VERSION() con comparación numérica:

SELECT
  VERSION() AS version_actual,
  CASE
    WHEN CAST(SUBSTRING_INDEX(VERSION(), '.', 1) AS UNSIGNED) >= 8
      THEN 'MySQL 8.x - Todas las funciones modernas disponibles'
    WHEN VERSION() LIKE '5.7%'
      THEN 'MySQL 5.7 - Sin CTEs, sin window functions'
    ELSE 'Versión antigua - Considerar actualización'
  END AS estado;
version_actualestado
8.0.36MySQL 8.x - Todas las funciones modernas disponibles

Caso práctico: auditoría de versiones en múltiples servidores

Si administras múltiples servidores MySQL, mantener un registro de las versiones instaladas es importante para la planificación de actualizaciones y el cumplimiento de políticas de seguridad. Puedes crear un script que recopile esta información:

#!/bin/bash
# version_audit.sh
echo "=== Auditoría de versiones MySQL ==="
echo "Fecha: $(date)"
echo ""
 
for SERVER in primary replica1 replica2 staging; do
  VERSION=$(mysql --login-path=$SERVER -N -e "SELECT VERSION()")
  COMMENT=$(mysql --login-path=$SERVER -N -e \
    "SELECT @@version_comment")
  UPTIME=$(mysql --login-path=$SERVER -N -e \
    "SELECT @@global.uptime")
  echo "$SERVER: $VERSION ($COMMENT) - Uptime: ${UPTIME}s"
done
=== Auditoría de versiones MySQL ===
Fecha: Tue Mar 18 16:45:00 UTC 2025

primary:  8.0.36 (MySQL Community Server) - Uptime: 1058423s
replica1: 8.0.36 (MySQL Community Server) - Uptime: 1058400s
replica2: 8.0.35 (MySQL Community Server) - Uptime: 2592000s
staging:  8.0.36 (MySQL Community Server) - Uptime: 345600s

Este informe revela que replica2 tiene una versión de parche anterior (8.0.35) y lleva 30 días sin reiniciar. Esto podría indicar que se le pasó una actualización y debería planificarse un mantenimiento.

Ciclo de vida y soporte

Conocer la versión también te permite verificar si tu instalación aún recibe actualizaciones de seguridad. Oracle publica un calendario de fin de soporte (EOL - End of Life) para cada versión de MySQL. Las versiones que ya no reciben parches de seguridad representan un riesgo para tu infraestructura.

-- Consulta rápida para incluir en reportes
SELECT
  VERSION() AS version,
  @@version_comment AS edicion,
  @@version_compile_os AS sistema,
  NOW() AS fecha_consulta;
versionedicionsistemafecha_consulta
8.0.36MySQL Community ServerLinux2025-03-18 16:45:00

Conocer la versión exacta de tu servidor MySQL es el primer paso para tomar decisiones informadas sobre funcionalidades, actualizaciones y seguridad. En el siguiente artículo veremos SHOW PROCESSLIST, un comando esencial para monitorear las conexiones y consultas activas en el servidor.

Escrito por Eduardo Lázaro