La société Oracle a développé une nouvelle branche du SGBD MySQL 8.2 et a publié des mises à jour correctives MySQL 8.0.35 et 5.7.44. Les builds de MySQL Community Server 8.2.0 sont préparés pour toutes les principales distributions Linux, FreeBSD, macOS et Windows.
MySQL 8.2.0 est la deuxième version créée dans le cadre du nouveau modèle de développement des versions, qui prévoit deux types de branches MySQL : « Innovation » et « LTS ». Les branches Innovation, auxquelles appartiennent MySQL 8.1 et 8.2, sont recommandées pour ceux qui souhaitent accéder plus rapidement à de nouvelles fonctionnalités. Ces branches sont publiées tous les 3 mois et ne sont prises en charge que jusqu'à la publication de la prochaine version majeure (par exemple, après la sortie de la branche 8.2, la prise en charge de la branche 8.1 cesse). Les branches LTS sont recommandées pour les déploiements nécessitant de la prévisibilité et un comportement constant sur le long terme. Les branches LTS seront publiées tous les deux ans et prises en charge pendant 5 ans, avec 3 années supplémentaires de support étendu possibles. La sortie de la version LTS MySQL 8.4 est attendue au printemps 2024, après quoi une nouvelle branche Innovation 9.0 sera créée.
Principales modifications dans MySQL 8.2 :
- Ajout du support d'un mécanisme d'authentification basé sur la spécification Webauthn (FIDO2), permettant d'appliquer l'authentification multi-facteurs et de confirmer la connexion à serveur MySQL sans mots de passe, en utilisant des jetons matériels compatibles FIDO2 ou une authentification biométrique. Le plugin avec support Webauthn n'est pour l'instant disponible que pour MySQL Enterprise.
- Le plugin serveur mysql_native_password, qui assure l'authentification par mot de passe, a été déplacé dans la catégorie optionnelle et peut être désactivé. Il est recommandé de passer à l'utilisation du plugin caching_sha2_password, qui utilise l'algorithme de hachage SHA2 plutôt que SHA1. Pour basculer les utilisateurs vers le plugin caching_sha2_password tout en remplaçant le mot de passe par un mot de passe aléatoire, vous pouvez utiliser la commande : ALTER USER ‘username’@’localhost’ IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- Optimisation des tables de hachage, permettant d'accélérer l'exécution des opérations EXCEPT et INTERSECT.
- Amélioration des fonctionnalités de débogage. Dans les opérations SELECT, INSERT, REPLACE, UPDATE et DELETE, le support de l'expression « EXPLAIN FORMAT=JSON » a été ajouté pour générer une sortie diagnostique au format JSON (par exemple, « EXPLAIN FORMAT=JSON INTO @var select_stmt; »).
- L'expression «EXPLAIN FOR SCHEMA» a été ajoutée pour afficher un diagnostic lié uniquement à un schéma de données spécifique.
- L'outil mysqldump a été enrichi d'une option «—output-as-version» pour générer des dumps compatibles avec une version antérieure spécifique de MySQL (par exemple, vous pouvez spécifier BEFORE_8_2_0 ou BEFORE_8_0_23 pour revenir à la terminologie non politiquement correcte master/slave, déclarée obsolète dans les versions 8.2.0 et 8.0.23).
- La bibliothèque cliente en C a été dotée de la possibilité d'utiliser des attributs nommés dans des requêtes paramétrées (prepared statement), mises en œuvre par une nouvelle fonction mysql_stmt_bind_named_param(), remplaçant la fonction mysql_stmt_bind_param().
- La répartition du trafic SQL dans le cluster de serveurs MySQL a été simplifiée. De nouvelles options ont été fournies pour organiser des connexions transparentes pour les applications aux serveurs secondaires ou principaux.
- Un nouveau privilège SET_ANY_DEFINER a été ajouté, permettant de créer des objets avec une expression DEFINER, ainsi qu'un privilège ALLOW_NONEXISTENT_DEFINER pour protéger les objets sans propriétaire.
- Les variables old et new, les masques «%» et «_» dans les opérations d'accès à la BDD, l'option «—character-set-client-handshake», la variable binlog_transaction_dependency_tracking et le privilège SET_USER_ID ont été déclarés obsolètes.
- Dans le cadre de l'ajustement de la terminologie non politiquement correcte relative à la réplication, les expressions «RESET MASTER», «SHOW MASTER STATUS», «SHOW MASTER LOGS» et «PURGE MASTER LOGS» ont été déclarées obsolètes, et doivent être remplacées par «RESET BINARY LOGS AND GTIDS», «SHOW BINARY LOG STATUS», «SHOW BINARY LOGS» et «PURGE BINARY LOGS».
- Les options précédemment déclarées obsolètes ont été supprimées : la fonction WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), la variable expire_logs_days, et les options «—abort-slave-event-count» et «—disconnect-slave-event-count».
- Vingt-six vulnérabilités ont été corrigées. Deux vulnérabilités liées à l'utilisation du paquet Curl et de la bibliothèque OpenSSL peuvent être exploitées à distance.
Source : opennet.ru
