La empresa Oracle ha creado una nueva rama de la base de datos MySQL 8.2 y ha publicado actualizaciones de corrección para MySQL 8.0.35 y 5.7.44. Las compilaciones de MySQL Community Server 8.2.0 están preparadas para todas las principales distribuciones de Linux, FreeBSD, macOS y Windows.
MySQL 8.2.0 es la segunda versión desarrollada bajo el nuevo modelo de lanzamiento, que contempla la existencia de dos tipos de ramas de MySQL: "Innovation" y "LTS". Las ramas Innovation, que incluyen MySQL 8.1 y 8.2, se recomiendan para aquellos que desean acceder a nuevas funcionalidades antes. Estas ramas se publican cada 3 meses y se mantienen solo hasta la publicación del siguiente lanzamiento significativo (por ejemplo, después de la aparición de la rama 8.2, se detiene el soporte para la rama 8.1). Las ramas LTS se recomiendan para implementaciones que requieren previsibilidad y un comportamiento constante a largo plazo. Las ramas LTS se lanzarán cada dos años y se mantendrán en su estado normal durante 5 años, además de poder recibir otros 3 años de soporte extendido. Se espera el lanzamiento LTS de MySQL 8.4 en primavera de 2024, tras el cual se formará una nueva rama Innovation 9.0.
Principales cambios en MySQL 8.2:
- Se ha agregado soporte para un mecanismo de autenticación basado en la especificación Webauthn (FIDO2), que permite implementar autenticación multifactor y verificar la conexión a servidor MySQL sin contraseñas, utilizando tokens hardware compatibles con FIDO2 o autenticación biométrica. El plugin compatible con Webauthn está actualmente disponible solo para MySQL Enterprise.
- El plugin del servidor mysql_native_password, que proporciona autenticación mediante contraseñas, se ha trasladado a la categoría de opcional y se puede desactivar. En lugar de mysql_native_password, se recomienda cambiar al uso de caching_sha2_password, que utiliza el algoritmo de hash SHA2 en lugar de SHA1. Para cambiar a los usuarios al plugin caching_sha2_password reemplazando la contraseña con una aleatoria, se puede usar el comando: ALTER USER ‘username’@’localhost’ IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- Se ha optimizado la ejecución de tablas hash, lo que ha permitido acelerar las operaciones EXCEPT e INTERSECT.
- Se han ampliado las capacidades de depuración. En las operaciones SELECT, INSERT, REPLACE, UPDATE y DELETE se ha agregado soporte para la expresión "EXPLAIN FORMAT=JSON" para generar salidas de diagnóstico en formato JSON (por ejemplo, "EXPLAIN FORMAT=JSON INTO @var select_stmt;").
- Se agregó la expresión «EXPLAIN FOR SCHEMA» para mostrar diagnósticos relacionados únicamente con un esquema de datos específico.
- Se añadió a la utilidad mysqldump la opción «—output-as-version» para crear volcado de datos compatibles con versiones anteriores específicas de MySQL (por ejemplo, se puede indicar BEFORE_8_2_0 o BEFORE_8_0_23 para retornar la terminología considerada inapropiada master/slave, declarada obsoleta en las versiones 8.2.0 y 8.0.23).
- Se ha incorporado a la biblioteca C del cliente la capacidad de utilizar atributos nombrados en consultas parametrizadas (prepared statement) mediante la nueva función mysql_stmt_bind_named_param(), que sustituye a mysql_stmt_bind_param().
- Se ha simplificado la distribución del tráfico SQL en el clúster de servidores MySQL. Se han proporcionado capacidades para establecer conexiones transparentes para las aplicaciones a servidores secundarios o primarios.
- Se ha añadido un nuevo privilegio SET_ANY_DEFINER, que otorga el derecho de crear objetos con la expresión DEFINER, así como el privilegio ALLOW_NONEXISTENT_DEFINER para proteger objetos sin propietario.
- Se han declarado obsoletas las variables old y new, las máscaras «%» y «_» en las operaciones de otorgamiento de acceso a la base de datos, la opción «—character-set-client-handshake», la variable binlog_transaction_dependency_tracking y el privilegio SET_USER_ID.
- En el contexto de ajustes de la terminología considerada inapropiada relacionada con la replicación, se han declarado obsoletas las expresiones «RESET MASTER», «SHOW MASTER STATUS», «SHOW MASTER LOGS» y «PURGE MASTER LOGS», siendo reemplazadas por «RESET BINARY LOGS AND GTIDS», «SHOW BINARY LOG STATUS», «SHOW BINARY LOGS» y «PURGE BINARY LOGS».
- Se han eliminado capacidades previamente declaradas obsoletas: la función WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), la variable expire_logs_days, las opciones «—abort-slave-event-count» y «—disconnect-slave-event-count».
- Se han corregido 26 vulnerabilidades. Dos vulnerabilidades relacionadas con el uso del paquete Curl y la biblioteca OpenSSL pueden ser explotadas de forma remota.
Fuente: opennet.ru
