L'azienda Oracle ha creato un nuovo ramo del DBMS MySQL 8.2 e ha pubblicato aggiornamenti correttivi per MySQL 8.0.35 e 5.7.44. Le build di MySQL Community Server 8.2.0 sono pronte per tutte le principali distribuzioni Linux, FreeBSD, macOS e Windows.
MySQL 8.2.0 è la seconda versione, sviluppata nell'ambito di un nuovo modello di rilascio che prevede due tipologie di rami MySQL: "Innovation" e "LTS". I rami Innovation, ai quali appartengono MySQL 8.1 e 8.2, sono consigliati per chi desidera accedere prima alle nuove funzionalità. Questi rami vengono pubblicati ogni 3 mesi e sono supportati solo fino alla pubblicazione del prossimo rilascio importante (ad esempio, dopo l'uscita del ramo 8.2, il supporto per il ramo 8.1 è terminato). I rami LTS sono raccomandati per le implementazioni che necessitano di prevedibilità e un comportamento costante nel tempo. I rami LTS saranno rilasciati ogni due anni e supportati regolarmente per 5 anni, oltre ai quali si potrà ricevere altri 3 anni di supporto esteso. È previsto un rilascio LTS di MySQL 8.4 nella primavera del 2024, dopo il quale sarà creato un nuovo ramo Innovation 9.0.
Le principali novità in MySQL 8.2:
- È stato aggiunto il supporto per il meccanismo di autenticazione basato sulla specifica Webauthn (FIDO2), che consente di applicare l'autenticazione a più fattori e di confermare la connessione a server MySQL senza password, utilizzando token hardware compatibili con FIDO2 o l'autenticazione biometrica. Il plugin con supporto Webauthn è attualmente disponibile solo per MySQL Enterprise.
- Il plugin server mysql_native_password, che fornisce autenticazione tramite password, è stato spostato nella categoria opzionale e può essere disattivato. Invece di mysql_native_password, si raccomanda di utilizzare il plugin caching_sha2_password, che impiega l'algoritmo di hash SHA2 invece di SHA1. Per passare gli utenti al plugin caching_sha2_password sostituendo la password con una casuale, si può utilizzare il comando: ALTER USER ‘username’@’localhost’ IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- È stata effettuata un'ottimizzazione delle tabelle hash, che ha permesso di velocizzare l'esecuzione delle operazioni EXCEPT e INTERSECT.
- Sono state ampliate le capacità di debug. Nelle operazioni SELECT, INSERT, REPLACE, UPDATE e DELETE è stato aggiunto il supporto per l'espressione "EXPLAIN FORMAT=JSON" per generare output diagnostico in formato JSON (ad esempio, "EXPLAIN FORMAT=JSON INTO @var select_stmt;").
- È stata aggiunta l'espressione «EXPLAIN FOR SCHEMA» per visualizzare la diagnostica correlata a un determinato schema di dati.
- Nell'utilità mysqldump è stata aggiunta l'opzione «—output-as-version» per creare dump compatibili con una determinata vecchia versione di MySQL (ad esempio, si può specificare BEFORE_8_2_0 o BEFORE_8_0_23 per tornare alla terminologia non politicamente corretta master/slave, deprecata nelle versioni 8.2.0 e 8.0.23).
- Nella libreria client C è stata aggiunta la possibilità di utilizzare attributi nominati nelle query parametrizzate (prepared statement), implementabili tramite la nuova funzione mysql_stmt_bind_named_param(), che sostituisce la funzione mysql_stmt_bind_param().
- È stata semplificata la distribuzione del traffico SQL nel cluster dei server MySQL. Sono state fornite possibilità per organizzare connessioni trasparenti per le applicazioni ai server secondari o primari.
- È stata aggiunta una nuova privilegio SET_ANY_DEFINER, che concede il diritto di creare oggetti con l'espressione DEFINER, e la privilegio ALLOW_NONEXISTENT_DEFINER per proteggere gli oggetti senza proprietario.
- Sono state deprecate: le variabili old e new, le maschere «%» e «_» nelle operazioni di accesso al DB, l'opzione «—character-set-client-handshake», la variabile binlog_transaction_dependency_tracking e il privilegio SET_USER_ID.
- Nell'ambito della correzione della terminologia non politicamente corretta relativa alla replica, sono state deprecate le espressioni «RESET MASTER», «SHOW MASTER STATUS», «SHOW MASTER LOGS» e «PURGE MASTER LOGS», che dovrebbero essere sostituite dalle espressioni «RESET BINARY LOGS AND GTIDS», «SHOW BINARY LOG STATUS», «SHOW BINARY LOGS» e «PURGE BINARY LOGS».
- Sono state rimosse le funzionalità precedentemente deprecate: la funzione WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), la variabile expire_logs_days, le opzioni «—abort-slave-event-count» e «—disconnect-slave-event-count».
- Sono state risolte 26 vulnerabilità. Due vulnerabilità, relative all'uso del pacchetto Curl e della libreria OpenSSL, possono essere sfruttate da remoto.
Fonte: opennet.ru
