MySQL 8.2.0 является вторым выпуском, сформированным в рамках новой модели формирования релизов, предусматривающей наличие двух типов веток MySQL — «Innovation» и «LTS». Ветки Innovation, к которым отнесены MySQL 8.1 и 8.2, рекомендованы для тех, кто хочет раньше получать доступ к новой функциональности. Данные ветки публикуются каждые 3 месяца и поддерживаются только до публикации следующего значительного релиза (например, после появления ветки 8.2 прекращена поддержка ветки 8.1). LTS-ветки рекомендованы для внедрений, которым необходима предсказуемость и длительное сохранение неизменного поведения. LTS ветки будут выпускаться раз в два года и поддерживаться в штатном режиме 5 лет, в дополнение к которым можно будет получить ещё 3 года расширенной поддержки. Весной 2024 года ожидается LTS-релиз MySQL 8.4, после которого будет сформирована новая Innovation-ветка 9.0.
Основные изменения в MySQL 8.2:
- Добавлена поддержка механизма аутентификации на базе спецификации Webauthn (FIDO2), позволяющего применять многофакторную аутентификацию и подтверждать подключение к серверу MySQL без паролей, используя аппаратные токены с поддержкой FIDO2 или биометрическую аутентификацию. Плагин с поддержкой Webauthn пока доступен только для MySQL Enterprise.
- Серверный плагин mysql_native_password, обеспечивающий аутентификацию при помощи паролей, переведён в категорию необязательных и может быть отключён. Вместо mysql_native_password рекомендуется перейти на использование плагина caching_sha2_password, применяющего для хэширования алгоритм SHA2 вместо SHA1. Для переключения пользователей на плагин caching_sha2_password с заменой пароля на случайный можно использовать команду:
ALTER USER 'username'@'localhost' IDENTIFIED WITH caching_sha2_password BY RANDOM PASSWORD PASSWORD EXPIRE FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 2;
- Проведена оптимизация хэш таблиц, позволившая ускорить выполнение операций EXCEPT и INTERSECT.
- Расширены отладочные возможности. В операции SELECT, INSERT, REPLACE, UPDATE и DELETE добавлена поддержка выражения «EXPLAIN FORMAT=JSON» для формирования диагностического вывода в формате JSON (например, «EXPLAIN FORMAT=JSON INTO @var select_stmt;»).
- Добавлено выражение «EXPLAIN FOR SCHEMA» для вывода диагностики, связанной только с определённой схемой данных.
- В утилиту mysqldump добавлена опция «—output-as-version» для создания дампов, совместимых с определённой старой версией MySQL (например, можно указать BEFORE_8_2_0 или BEFORE_8_0_23 для возвращения неполиткорректной терминологии master/slave, объявленной устаревшей в выпусках 8.2.0 и 8.0.23).
- В клиентскую Си-библиотеку добавлена возможность использования именованных атрибутов в параметризованных запросах (prepared statement), реализуемых при помощи новой функции mysql_stmt_bind_named_param(), пришедшей на смену функции mysql_stmt_bind_param().
- Упрощено распределение SQL-трафика в кластере из MySQL-серверов. Предоставлены возможности для организации прозрачных для приложений подключений к вторичным или первичным серверам.
- Добавлена новая привилегия SET_ANY_DEFINER, предоставляющая право создания объектов с выражением DEFINER, а также привилегия ALLOW_NONEXISTENT_DEFINER для защиты объектов с отсутствующим владельцем.
- Объявлены устаревшими: переменные old и new, маски «%» и «_» в операциях предоставления доступа к БД, опция «—character-set-client-handshake», переменная binlog_transaction_dependency_tracking и привилегия SET_USER_ID.
- В рамках корректировки неполиткорректной терминологии, связанной с репликацией, объявлены устаревшими выражения «RESET MASTER», «SHOW MASTER STATUS», «SHOW MASTER LOGS» и «PURGE MASTER LOGS», вместо которых следует использовать выражения «RESET BINARY LOGS AND GTIDS», «SHOW BINARY LOG STATUS», «SHOW BINARY LOGS» и «PURGE BINARY LOGS».
- Удалены возможности, ранее объявленные устаревшими: функция WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), переменная expire_logs_days, опции «—abort-slave-event-count» и «—disconnect-slave-event-count».
- Устранено 26 уязвимостей. Две уязвимости, связанные с использованием пакета Curl и библиотеки OpenSSL, могут быть эксплуатированы удалённо.
Источник: http://www.opennet.ru/opennews/art.shtml?num=59995