La société Oracle a créé une nouvelle branche de la base de données MySQL 8.4 et a publié une mise à jour corrective MySQL 8.0.37. Les versions du MySQL Community Server 8.4.0 sont préparées pour toutes les principales distributions Linux, FreeBSD, macOS et Windows. La version 8.4.0 est classée parmi les branches à long terme (LTS), qui sont publiées tous les deux ans et supportées pendant 5 ans (avec la possibilité d'obtenir 3 années supplémentaires de support étendu).
MySQL 8.4.0 est la quatrième version élaborée dans le cadre du nouveau modèle de création de versions, qui prévoit l'existence de deux types de branches MySQL : « Innovation » et « LTS ». Les branches Innovation, qui incluent MySQL 8.1, 8.2 et 8.3, sont recommandées pour ceux qui souhaitent accéder plus tôt aux nouvelles fonctionnalités. Ces branches sont publiées tous les 3 mois et ne sont supportées que jusqu'à la publication de la prochaine version majeure (par exemple, après l'apparition de la branche 8.4, la support de la branche 8.3 cesse). Les branches LTS sont recommandées pour les déploiements nécessitant prévisibilité et stabilité comportementale prolongée. Après la branche LTS, une nouvelle branche Innovation sera formée — MySQL 9.0.
Principales modifications dans MySQL 8.4 :
- L'optimiseur a ajouté le support de la mise à jour automatique des histogrammes, indépendamment de l'exécution de l'opération « ANALYZE TABLE » pour la table parent. La mise à jour automatique s'active en spécifiant l'expression « AUTO UPDATE » lors de l'exécution de l'opération « ANALYZE TABLE », et se désactive en spécifiant l'expression « MANUAL UPDATE », qui est utilisée par défaut.
- Ajoutées les options « —keyring-migration-from-component », « —keyring-migration-source » et « —keyring-migration-destination » pour la migration depuis le composant keyring vers le plugin keyring.
- Ajoutée une nouvelle privilège FLUSH_PRIVILEGES, qui contrairement à l'ancienne privilège RELOAD, donne à l'utilisateur des droits uniquement pour exécuter l'opération « FLUSH PRIVILEGES ».
- Ajoutée une nouvelle privilège OPTIMIZE_LOCAL_TABLE, permettant à l'utilisateur d'exécuter les opérations « OPTIMIZE LOCAL TABLE » et « OPTIMIZE NO_WRITE_TO_BINLOG TABLE ».
- Modifiées les valeurs par défaut des variables système group_replication_consistency et group_replication_exit_state_action. La variable group_replication_consistency est maintenant réglée sur BEFORE_ON_PRIMARY_FAILOVER au lieu de EVENTUAL, et la variable group_replication_exit_state_action sur OFFLINE_MODE au lieu de READ_ONLY.
- Dans les versions fournies avec la bibliothèque intégrée OpenSSL, une nouvelle version d'OpenSSL 3.0.13 est utilisée.
- La mise à jour directe de MySQL 5.7 à MySQL 8.4 a été interrompue. Pour passer de MySQL 5.7, il est désormais nécessaire de d'abord passer à la version 8.0, puis de la mettre à jour vers la version 8.4.
- Les valeurs par défaut des paramètres InnoDB suivants ont été modifiées : innodb_adaptive_hash_index, innodb_buffer_pool_in_core_file, innodb_buffer_pool_instances, innodb_change_buffering, innodb_doublewrite_files, innodb_doublewrite_pages, innodb_flush_method, innodb_io_capacity, innodb_io_capacity_max, innodb_log_buffer_size, innodb_numa_interleave, innodb_page_cleaners, innodb_parallel_read_threads, innodb_purge_threads, innodb_read_io_threads, innodb_use_fdatasync, temptable_max_ram, temptable_max_mmap et temptable_use_mmap.
- Ajout du support pour la construction de paquets pour les distributions Fedora 40 et Ubuntu 24.04.
- Le plugin de serveur mysql_native_password, qui permet l'authentification par mot de passe, est désactivé par défaut et déclaré obsolète. Il est recommandé de passer à l'utilisation du plugin caching_sha2_password, qui utilise l'algorithme de hachage SHA2 au lieu de SHA1. Pour rétablir le support de mysql_native_password, vous pouvez utiliser l'option « —mysql-native-password=ON » ou la configuration « mysql_native_password=ON ».
- Le support des protocoles et algorithmes de chiffrement non sécurisés a été interrompu. Seuls les protocoles TLS v1.2 et TLSv1.3, garantissant la confidentialité persistante (forward secrecy), ainsi que les algorithmes, ainsi que les certificats utilisant SHA2, et les algorithmes AES en mode GCM ou AEAD, sont conservés.
- Les expressions SQL liées à la réplication, précédemment déclarées obsolètes en raison d'une terminologie inappropriée, ont été supprimées : START SLAVE (utilisez START REPLICA) ; STOP SLAVE (utilisez STOP REPLICA) ; SHOW SLAVE STATUS (utilisez SHOW REPLICA STATUS) ; SHOW SLAVE HOSTS (SHOW REPLICAS) ; RESET SLAVE (RESET REPLICA) ; CHANGE MASTER TO (CHANGE REPLICATION SOURCE TO) ; RESET MASTER (RESET BINARY LOGS AND GTIDS) ; SHOW MASTER STATUS (SHOW BINARY LOG STATUS) ; PURGE MASTER LOGS (PURGE BINARY LOGS) ; SHOW MASTER LOGS (SHOW BINARY LOGS).
- Les options précédemment déclarées obsolètes utilisées dans les expressions « CHANGE REPLICATION SOURCE TO » et « START REPLICA », et utilisant le mot « master », qui a été remplacé par « source » : MASTER_AUTO_POSITION (utilisez SOURCE_AUTO_POSITION), MASTER_HOST (utilisez SOURCE_HOST), MASTER_BIND (utilisez SOURCE_BIND), MASTER_USER (SOURCE_USER), MASTER_PASSWORD (SOURCE_PASSWORD), MASTER_PORT (SOURCE_PORT), MASTER_CONNECT_RETRY (SOURCE_CONNECT_RETRY), MASTER_RETRY_COUNT (SOURCE_RETRY_COUNT), MASTER_DELAY (SOURCE_DELAY), MASTER_SSL (SOURCE_SSL), MASTER_SSL_CA (SOURCE_SSL_CA), MASTER_SSL_CAPATH (SOURCE_SSL_CAPATH), MASTER_SSL_CIPHER (SOURCE_SSL_CIPHER), MASTER_SSL_CRL (SOURCE_SSL_CRL), MASTER_SSL_CRLPATH (SOURCE_SSL_CRLPATH), MASTER_SSL_KEY (SOURCE_SSL_KEY), MASTER_SSL_VERIFY_SERVER_CERT (SOURCE_SSL_VERIFY_SERVER_CERT), MASTER_TLS_VERSION (SOURCE_TLS_VERSION), MASTER_TLS_CIPHERSUITES (SOURCE_TLS_CIPHERSUITES), MASTER_SSL_CERT (SOURCE_SSL_CERT), MASTER_PUBLIC_KEY_PATH (SOURCE_PUBLIC_KEY_PATH), GET_MASTER_PUBLIC_KEY (GET_SOURCE_PUBLIC_KEY), MASTER_HEARTBEAT_PERIOD (SOURCE_HEARTBEAT_PERIOD), MASTER_COMPRESSION_ALGORITHMS (SOURCE_COMPRESSION_ALGORITHMS), MASTER_ZSTD_COMPRESSION_LEVEL (SOURCE_ZSTD_COMPRESSION_LEVEL), MASTER_LOG_FILE (SOURCE_LOG_FILE), MASTER_LOG_POS (SOURCE_LOG_POS).
- Les variables système contenant les mots « master » et « slave » ont été supprimées : Com_slave_start (utilisez Com_replica_start); Com_slave_stop (Com_replica_stop); Com_show_slave_status (Com_show_replica_status); Com_show_slave_hosts (Com_show_replicas); Com_show_master_status (Com_show_binary_log_status); et Com_change_master (Com_change_replication_source).
- La variable système group_replication_allow_local_lower_version_join a été déclarée obsolète. Les options précédemment déclarées obsolètes « —no-dd-upgrade », « —old », « —new », « —language », « —ssl« , « —admin-ssl » et les variables binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals et default_authentication_plugin ont été supprimées.
- La table inutile INFORMATION_SCHEMA.TABLESPACES a été supprimée.
- Le support de l'utilisation de la valeur LOW_PRIORITY avec l'expression « LOCK TABLES … WRITE » a été arrêté.
- Le support de l'utilisation du modificateur AUTO_INCREMENT avec les types FLOAT et DOUBLE a été arrêté.
- L'outil mysql_ssl_rsa_setup a été supprimé — lors de la compilation avec OpenSSL. serveur MySQL peut générer automatiquement les fichiers SSL et RSA manquants lors du démarrage.
- L'outil mysql_upgrade, qui n'est plus utilisé avec la version MySQL 8.0.16, a été supprimé.
- Les outils mysqlpump, lz4_decompress et zlib_decompress ont été supprimés, et il convient d'utiliser l'outil mysqldump ou les commandes dump dans l'interface interactive.
- Les plugins suivants ont été supprimés : authentication_fido, authentication_fido_client (utilisez authentication_webauthn) ; keyring_file (utilisez component_keyring_file) ; keyring_encrypted_file (utilisez component_keyring_encrypted_file) ; keyring_oci (utilisez component_keyring_oci).
- Le support de l'expression ENGINE a été interrompu, ainsi que les diverses options « DROP TABLESPACE » et « ALTER TABLESPACE ».
- Le privilège « SET_USER_ID » a été supprimé et ne peut plus être spécifié dans les expressions GRANT.
- Les fonctions API suivantes ont été restaurées : mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() et mysql_ssl_set(), dont certaines ont été retravaillées en utilisant la fonction mysql_real_query(). Ces fonctions avaient été supprimées dans la branche MySQL 8.3, mais ont été restaurées pour le support de la branche LTS MySQL 8.4.
- Vingt-six vulnérabilités ont été corrigées, pouvant être exploitées à distance. Le problème le plus grave a un niveau de sévérité de 6.5 et est lié à une vulnérabilité d'openSSL. Les vulnérabilités moins graves concernent l'optimiseur, InnoDB, le Thread Pooling, le plugin de réplication de groupe, le plugin d'audit, DML et mysqldump.
Source : opennet.ru
