Compania Oracle a format o nouă ramură a SGBD-ului MySQL 8.2 și a publicat actualizările corective MySQL 8.0.35 și 5.7.44. Versiunile MySQL Community Server 8.2.0 sunt pregătite pentru toate distribuțiile principale de Linux, FreeBSD, macOS și Windows.
MySQL 8.2.0 este a doua lansare creată în cadrul noului model de generare a versiunilor, care preconizează existența a două tipuri de ramuri MySQL - „Innovation” și „LTS”. Ramurile Innovation, inclusiv MySQL 8.1 și 8.2, sunt recomandate pentru cei care doresc să acceseze mai devreme noi funcționalități. Aceste ramuri sunt publicate la fiecare 3 luni și sunt suportate doar până la publicarea următoarei versiuni semnificative (de exemplu, după apariția ramurii 8.2, suportul pentru ramura 8.1 se încheie). Ramurile LTS sunt recomandate pentru implementări care necesită previzibilitate și o comportare constantă pe termen lung. Ramurile LTS vor fi lansate o dată la doi ani și vor fi suportate în mod obișnuit timp de 5 ani, la care se va adăuga un suport extins de încă 3 ani. Se așteaptă ca lansarea LTS MySQL 8.4 să aibă loc în primăvara anului 2024, după care va fi formată o nouă ramură Innovation 9.0.
Principalele modificări în MySQL 8.2:
- A fost adăugată suport pentru mecanismul de autentificare bazat pe specificația Webauthn (FIDO2), care permite aplicarea autentificării multifactor și confirmarea conexiunii la server MySQL fără parole, utilizând tokenuri hardware compatibile cu FIDO2 sau autentificare biometrică. Pluginul cu suport pentru Webauthn este disponibil în prezent doar pentru MySQL Enterprise.
- Pluginul de server mysql_native_password, care asigură autentificarea prin parolă, a fost mutat în categoria opțională și poate fi dezactivat. Este recomandat să se treacă la utilizarea pluginului caching_sha2_password, care folosește algoritmul SHA2 pentru hash-uri în loc de SHA1. Pentru a trece utilizatorii la pluginul caching_sha2_password, înlocuind parola cu una aleatorie, se poate folosi comanda: ALTER USER ‘username’@’localhost’ IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- A fost optimizat tabelul hash, permițând accelerarea operațiunilor EXCEPT și INTERSECT.
- Au fost extinse capabilitățile de depanare. În operațiunile SELECT, INSERT, REPLACE, UPDATE și DELETE a fost adăugat suport pentru expresia „EXPLAIN FORMAT=JSON” pentru a genera ieșiri diagnostice în format JSON (de exemplu, „EXPLAIN FORMAT=JSON INTO @var select_stmt;”).
- A fost adăugat expresia „EXPLAIN FOR SCHEMA” pentru afișarea diagnosticelor legate de un anumit schemă de date.
- Utilitarul mysqldump a primit opțiunea „—output-as-version” pentru a crea copii de rezervă compatibile cu o anumită versiune mai veche de MySQL (de exemplu, se poate specifica BEFORE_8_2_0 sau BEFORE_8_0_23 pentru a reveni la terminologia considerată problematică master/slave, declarată învechită în versiunile 8.2.0 și 8.0.23).
- Biblioteca client C a fost extinsă cu posibilitatea utilizării atributelor denumite în interogări parametrizate (prepared statement), implementate prin noua funcție mysql_stmt_bind_named_param(), care înlocuiește funcția mysql_stmt_bind_param().
- A fost simplificată distribuția traficului SQL în clusterele de servere MySQL. Au fost oferite posibilități pentru stabilirea de conexiuni transparente pentru aplicații la servere secundare sau primare.
- A fost adăugată noua privilegiu SET_ANY_DEFINER, care conferă dreptul de a crea obiecte cu expresia DEFINER, precum și privilegiul ALLOW_NONEXISTENT_DEFINER pentru a proteja obiectele fără un proprietar.
- Au fost declarate învechite: variabilele old și new, măștile „%” și „_” în operațiunile de acordare a accesului la BD, opțiunea „—character-set-client-handshake”, variabila binlog_transaction_dependency_tracking și privilegiul SET_USER_ID.
- În cadrul ajustării terminologiei considerate problematică legată de replicare, au fost declarate învechite expresiile „RESET MASTER”, „SHOW MASTER STATUS”, „SHOW MASTER LOGS” și „PURGE MASTER LOGS”, în locul cărora se recomandă utilizarea expresiilor „RESET BINARY LOGS AND GTIDS”, „SHOW BINARY LOG STATUS”, „SHOW BINARY LOGS” și „PURGE BINARY LOGS”.
- Au fost eliminate funcțiile anterior declarate învechite: funcția WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), variabila expire_logs_days, opțiunile „—abort-slave-event-count” și „—disconnect-slave-event-count”.
- Au fost remediate 26 de vulnerabilități. Două vulnerabilități legate de utilizarea pachetului Curl și a bibliotecii OpenSSL pot fi exploatate de la distanță.
Sursa: opennet.ro
