Доступна СУБД MySQL 8.2.0

Компания Oracle сформировала новую ветку СУБД MySQL 8.2 и опубликовала корректирующие обновления MySQL 8.0.35 и 5.7.44. Сборки MySQL Community Server 8.2.0 подготовлены для всех основных дистрибутивов Linux, FreeBSD, macOS и Windows.

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, могут быть эксплуатированы удалённо.
Release. Ссылка here.