Oracle ha creato un nuovo ramo del DBMS MySQL 8.4 e ha pubblicato un aggiornamento corretto di MySQL 8.0.37. Le build di MySQL Community Server 8.4.0 sono preparate per tutte le principali distribuzioni di Linux, FreeBSD, macOS e Windows. La versione 8.4.0 è classificata come ramo con supporto a lungo termine (LTS), che vengono rilasciati ogni due anni e supportati per 5 anni (con la possibilità di ottenere ulteriori 3 anni di supporto esteso).
MySQL 8.4.0 è la quarta versione, formata secondo il nuovo modello di rilascio che prevede due tipi di rami MySQL: "Innovation" e "LTS". I rami Innovation, a cui appartengono MySQL 8.1, 8.2 e 8.3, sono raccomandati per coloro che desiderano accedere prima alle nuove funzionalità. Questi rami vengono pubblicati ogni 3 mesi e sono supportati solo fino alla pubblicazione del successivo rilascio importante (ad esempio, dopo l'uscita del ramo 8.4, il supporto per il ramo 8.3 viene interrotto). I rami LTS sono raccomandati per le implementazioni che necessitano di prevedibilità e mantenimento prolungato del comportamento invariato. Seguirà un nuovo ramo Innovation dopo il ramo LTS: MySQL 9.0.
Principali novità in MySQL 8.4:
- Nell'ottimizzatore è stata aggiunta la supporto per l'aggiornamento automatico delle istogrammi, indipendentemente dall'esecuzione dell'operazione "ANALYZE TABLE" per la tabella padre. L'aggiornamento automatico è attivato specificando l'espressione "AUTO UPDATE" durante l'esecuzione dell'operazione "ANALYZE TABLE", ed è disattivato specificando l'espressione "MANUAL UPDATE", che è utilizzata per impostazione predefinita.
- Sono state aggiunte le opzioni "—keyring-migration-from-component", "—keyring-migration-source" e "—keyring-migration-destination" per la migrazione da un componente keyring a un plugin keyring.
- È stata aggiunta una nuova privilegio FLUSH_PRIVILEGES, che a differenza del privilegio RELOAD disponibile in precedenza fornisce all'utente solo i diritti per eseguire l'operazione "FLUSH PRIVILEGES".
- È stata aggiunta una nuova privilegio OPTIMIZE_LOCAL_TABLE, che consente all'utente di eseguire le operazioni "OPTIMIZE LOCAL TABLE" e "OPTIMIZE NO_WRITE_TO_BINLOG TABLE".
- Modificati i valori predefiniti delle variabili di sistema group_replication_consistency e group_replication_exit_state_action. La variabile group_replication_consistency ora è impostata su BEFORE_ON_PRIMARY_FAILOVER invece di EVENTUAL, mentre group_replication_exit_state_action è impostata su OFFLINE_MODE invece di READ_ONLY.
- Nelle build fornite con la libreria OpenSSL integrata, è stata attivata una nuova versione di OpenSSL 3.0.13.
- Interrotta l'aggiornamento diretto da MySQL 5.7 a MySQL 8.4. Per passare da MySQL 5.7, ora è necessario prima passare al ramo 8.0, e poi aggiornare a 8.4.
- Modificati i valori predefiniti delle seguenti impostazioni InnoDB: 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 e temptable_use_mmap.
- Aggiunto il supporto per la creazione di pacchetti per le distribuzioni Fedora 40 e Ubuntu 24.04.
- Il plugin server mysql_native_password, che consente l'autenticazione tramite password, è stato disattivato per impostazione predefinita e dichiarato obsoleto. Si consiglia di passare all'uso del plugin caching_sha2_password, che utilizza l'algoritmo SHA2 per l'hashing al posto di SHA1. Per ripristinare il supporto per mysql_native_password, si può utilizzare l'opzione "—mysql-native-password=ON" o la configurazione "mysql_native_password=ON".
- Interrotta la supporto per protocolli e algoritmi di crittografia non sicuri. Sono rimasti solo TLS v1.2 e TLS v1.3, algoritmi che garantiscono la segretezza diretta (forward secrecy), cifrature e certificati con SHA2, e algoritmi AES in modalità GCM o AEAD.
- Rimossi espressioni SQL legate alla replica, precedentemente dichiarate obsolescenti per l'uso di termini non corretti dal punto di vista politico: START SLAVE (si deve usare START REPLICA); STOP SLAVE (si deve usare STOP REPLICA); SHOW SLAVE STATUS (si deve usare 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).
- Sono state rimosse le opzioni precedentemente dichiarate obsolete, utilizzate nelle espressioni «CHANGE REPLICATION SOURCE TO» e «START REPLICA», e che utilizzavano la parola «master», sostituita con «source»: SOURCE_AUTO_POSITION (utilizzare al suo posto SOURCE_AUTO_POSITION), SOURCE_HOST (utilizzare al suo posto SOURCE_HOST), SOURCE_BIND (utilizzare al suo posto SOURCE_BIND), SOURCE_USER (SOURCE_USER), SOURCE_PASSWORD (SOURCE_PASSWORD), SOURCE_PORT (SOURCE_PORT), SOURCE_CONNECT_RETRY (SOURCE_CONNECT_RETRY), SOURCE_RETRY_COUNT (SOURCE_RETRY_COUNT), SOURCE_DELAY (SOURCE_DELAY), SOURCE_SSL (SOURCE_SSL), SOURCE_SSL_CA (SOURCE_SSL_CA), SOURCE_SSL_CAPATH (SOURCE_SSL_CAPATH), SOURCE_SSL_CIPHER (SOURCE_SSL_CIPHER), SOURCE_SSL_CRL (SOURCE_SSL_CRL), SOURCE_SSL_CRLPATH (SOURCE_SSL_CRLPATH), SOURCE_SSL_KEY (SOURCE_SSL_KEY), SOURCE_SSL_VERIFY_SERVER_CERT (SOURCE_SSL_VERIFY_SERVER_CERT), SOURCE_TLS_VERSION (SOURCE_TLS_VERSION), SOURCE_TLS_CIPHERSUITES (SOURCE_TLS_CIPHERSUITES), SOURCE_SSL_CERT (SOURCE_SSL_CERT), SOURCE_PUBLIC_KEY_PATH (SOURCE_PUBLIC_KEY_PATH), GET_SOURCE_PUBLIC_KEY (GET_SOURCE_PUBLIC_KEY), SOURCE_HEARTBEAT_PERIOD (SOURCE_HEARTBEAT_PERIOD), SOURCE_COMPRESSION_ALGORITHMS (SOURCE_COMPRESSION_ALGORITHMS), SOURCE_ZSTD_COMPRESSION_LEVEL (SOURCE_ZSTD_COMPRESSION_LEVEL), SOURCE_LOG_FILE (SOURCE_LOG_FILE), SOURCE_LOG_POS (SOURCE_LOG_POS).
- Rimosse le variabili di sistema che contenevano le parole «master» e «slave»: Com_replica_start (utilizzare al posto di Com_replica_start); Com_replica_stop (Com_replica_stop); Com_show_replica_status (Com_show_replica_status); Com_show_replicas (Com_show_replicas); Com_show_binary_log_status (Com_show_binary_log_status); e Com_change_replication_source (Com_change_replication_source).
- Dichiarata obsoleta la variabile di sistema group_replication_allow_local_lower_version_join. Rimosse le opzioni precedentemente dichiarate obsolete «—no-dd-upgrade», «—old», «—new», «—language», «—admin-ssl» e le variabili binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals e default_authentication_plugin.ssl«, «—admin-ssl» e le variabili binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals e default_authentication_plugin.
- Tabella non utilizzata INFORMATION_SCHEMA.TABLESPACES rimossa.
- Interrotta la supporto per l'uso del valore LOW_PRIORITY insieme all'espressione «LOCK TABLES … WRITE».
- Supporto per l'utilizzo del modificatore AUTO_INCREMENT insieme ai tipi FLOAT e DOUBLE è stato interrotto.
- Rimossa l'utilità mysql_ssl_rsa_setup — durante la compilazione con OpenSSL. un server MySQL può generare automaticamente i file SSL e RSA mancanti all'avvio.
- L'utilità mysql_upgrade, che non è utilizzata con la versione MySQL 8.0.16, è stata rimossa.
- Sono stati rimossi strumenti: mysqlpump, lz4_decompress e zlib_decompress, per i quali è consigliato utilizzare l'utilità mysqldump o i comandi dump dell'interfaccia interattiva.
- Rimossi plugin: authentication_fido, authentication_fido_client (utilizzare authentication_webauthn); keyring_file (utilizzare component_keyring_file); keyring_encrypted_file (utilizzare component_keyring_encrypted_file); keyring_oci (utilizzare component_keyring_oci).
- Interrotta la supporto per l'espressione ENGINE insieme a diverse varianti di «DROP TABLESPACE» e «ALTER TABLESPACE».
- Rimossa la privilegio «SET_USER_ID», che non può più essere specificato nelle espressioni GRANT.
- Sono state ripristinate le funzioni API: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() e mysql_ssl_set(), alcune delle quali sono state riviste utilizzando la funzione mysql_real_query(). Queste funzioni erano state rimosse nella branch MySQL 8.3, ma sono state ripristinate per supporto nella branch LTS di MySQL 8.4.
- Sono state risolte 26 vulnerabilità che potrebbero essere sfruttate da remoto. Il problema più grave ha un livello di gravità di 6.5 ed è associato a una vulnerabilità in openSSL. Vulnerabilità meno gravi riguardano l'ottimizzatore, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.
Fonte: opennet.ru
