Firma Oracle utworzyła nową gałąź baz danych MySQL 8.2 i opublikowała aktualizacje poprawkowe MySQL 8.0.35 i 5.7.44. Wersje MySQL Community Server 8.2.0 są dostępne dla wszystkich głównych dystrybucji Linux, FreeBSD, macOS i Windows.
MySQL 8.2.0 jest drugim wydaniem stworzonym w ramach nowego modelu wydawania, który przewiduje istnienie dwóch typów gałęzi MySQL - «Innovation» i «LTS». Gałęzie Innovation, do których należą MySQL 8.1 i 8.2, są zalecane dla tych, którzy chcą mieć wcześniejszy dostęp do nowych funkcjonalności. Te gałęzie są publikowane co 3 miesiące i są wspierane tylko do momentu wydania kolejnej znaczącej wersji (np. po pojawieniu się gałęzi 8.2 wsparcie gałęzi 8.1 zostaje zakończone). Gałęzie LTS są zalecane dla wdrożeń, które wymagają przewidywalności i długotrwałego zachowania się systemu. Gałęzie LTS będą wydawane co dwa lata i wspierane w trybie standardowym przez 5 lat, z dodatkową możliwością otrzymania jeszcze 3 lat wsparcia rozszerzonego. Wiosną 2024 roku oczekiwane jest wydanie LTS MySQL 8.4, po którym powstanie nowa gałąź Innovation 9.0.
Główne zmiany w MySQL 8.2:
- Dodano wsparcie dla mechanizmu uwierzytelniania opartego na specyfikacji Webauthn (FIDO2), co pozwala na stosowanie uwierzytelniania wieloskładnikowego oraz potwierdzanie połączenia z serwera MySQL bez haseł, wykorzystując sprzętowe klucze wspierające FIDO2 lub uwierzytelnianie biometryczne. Wtyczka wspierająca Webauthn jest tymczasowo dostępna tylko dla MySQL Enterprise.
- Wtyczka serwerowa mysql_native_password, zapewniająca uwierzytelnianie przy pomocy haseł, została przeniesiona do kategorii opcjonalnych i może być wyłączona. Zamiast mysql_native_password zaleca się przejście na wtyczkę caching_sha2_password, która stosuje algorytm SHA2 do haszowania zamiast SHA1. Aby przełączyć użytkowników na wtyczkę caching_sha2_password z zastąpieniem hasła losowym, można użyć polecenia: ALTER USER ‘nazwa_użytkownika’@’localhost’ IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- Przeprowadzono optymalizację tabel haszowych, co pozwoliło przyspieszyć wykonywanie operacji EXCEPT i INTERSECT.
- Rozszerzone możliwości debugowania. W operacjach SELECT, INSERT, REPLACE, UPDATE i DELETE dodano wsparcie dla wyrażenia «EXPLAIN FORMAT=JSON» w celu generowania diagnostycznego wyjścia w formacie JSON (np. «EXPLAIN FORMAT=JSON INTO @var select_stmt;»).
- Dodano wyrażenie „EXPLAIN FOR SCHEMA” do wyświetlania diagnostyki związanej tylko z określoną schemą danych.
- Do narzędzia mysqldump dodano opcję „—output-as-version” do tworzenia zrzutów zgodnych z określoną, starszą wersją MySQL (na przykład można podać BEFORE_8_2_0 lub BEFORE_8_0_23, aby powrócić do niepoprawnej politycznie terminologii master/slave, która została uznana za przestarzałą w wydaniach 8.2.0 i 8.0.23).
- Do biblioteki klienckiej C dodano możliwość używania nazwanych atrybutów w zparametryzowanych zapytaniach (prepared statement), osiąganych za pomocą nowej funkcji mysql_stmt_bind_named_param(), która zastępuje funkcję mysql_stmt_bind_param().
- Uproszczono rozdzielanie ruchu SQL w klastrze serwerów MySQL. Zapewniono możliwości organizacji przejrzystych dla aplikacji połączeń z serwerami podrzędnymi lub nadrzędnymi.
- Dodano nową privilegium SET_ANY_DEFINER, która przyznaje prawo tworzenia obiektów z wyrażeniem DEFINER, a także privilegium ALLOW_NONEXISTENT_DEFINER w celu ochrony obiektów z brakującym właścicielem.
- Ogłoszone jako przestarzałe: zmienne old i new, maski „%” i „_” w operacjach przyznawania dostępu do Bazy Danych, opcja „—character-set-client-handshake”, zmienna binlog_transaction_dependency_tracking oraz przywilej SET_USER_ID.
- W ramach dostosowania niepoprawnej politycznie terminologii związanej z replikacją, uznano za przestarzałe wyrażenia „RESET MASTER”, „SHOW MASTER STATUS”, „SHOW MASTER LOGS” i „PURGE MASTER LOGS”, zamiast których należy używać wyrażeń „RESET BINARY LOGS AND GTIDS”, „SHOW BINARY LOG STATUS”, „SHOW BINARY LOGS” i „PURGE BINARY LOGS”.
- Usunięto możliwości, które wcześniej uznano za przestarzałe: funkcję WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), zmienną expire_logs_days, opcje „—abort-slave-event-count” i „—disconnect-slave-event-count”.
- Usunięto 26 podatności. Dwie podatności związane z używaniem pakietu Curl i biblioteki OpenSSL mogą być wykorzystywane zdalnie.
Źródło: opennet.ru
