Компания Oracle създаде нова версия на СУБД MySQL 8.4 и публикува коригираща актуализация MySQL 8.0.37. Сборките на MySQL Community Server 8.4.0 са подготвени за всички основни дистрибуции на Linux, FreeBSD, macOS и Windows. Версия 8.4.0 е класифицирана като версия с дългосрочна поддръжка (LTS), която се публикува на всеки две години и се поддържа в продължение на 5 години (плюс е възможно получаване на допълнителни 3 години разширена поддръжка).
MySQL 8.4.0 е четвъртото издание, създадено в рамките на новия модел на издаване, който предвижда два типа версии на MySQL — «Innovation» и «LTS». Версиите Innovation, които включват MySQL 8.1, 8.2 и 8.3, са препоръчителни за тези, които искат ранно достъп до нова функционалност. Тези версии се публикуват на всеки 3 месеца и се поддържат само до публикуването на следващото значително издание (например, след появата на версия 8.4 поддръжката на версия 8.3 спира). LTS-версите са препоръчителни за внедрения, които изискват предсказуемост и дълготрайно запазване на неизменен функционалност. След LTS версия ще бъде създадена нова версия на Innovation — MySQL 9.0.
Основни промени в MySQL 8.4:
- Оптимизаторът получи поддръжка за автоматично обновление на хистограми, независимо от извършването на операцията «ANALYZE TABLE» за родителската таблица. Автоматичното обновление се активира чрез указание на израза «AUTO UPDATE» при извършване на операцията «ANALYZE TABLE», а деактивира се чрез указание на израза «MANUAL UPDATE», който се използва по подразбиране.
- Добавени са опции «—keyring-migration-from-component», «—keyring-migration-source» и «—keyring-migration-destination» за миграция от компонента keyring в плъгин keyring.
- Добавена е нова привилегия FLUSH_PRIVILEGES, която, за разлика от предходната привилегия RELOAD, предоставя на потребителя права само за извършване на операцията «FLUSH PRIVILEGES».
- Добавена е нова привилегия OPTIMIZE_LOCAL_TABLE, позволяваща на потребителите да извършват операции «OPTIMIZE LOCAL TABLE» и «OPTIMIZE NO_WRITE_TO_BINLOG TABLE».
- Променени са стойностите по подразбиране на системните променливи group_replication_consistency и group_replication_exit_state_action. Променливата group_replication_consistency сега е настроена на стойности BEFORE_ON_PRIMARY_FAILOVER вместо EVENTUAL, а променливата group_replication_exit_state_action на стойност OFFLINE_MODE вместо READ_ONLY.
- В сборките, доставяни с вградена библиотека OpenSSL, е активирана нова версия OpenSSL 3.0.13.
- Прекратено е директното обновление от MySQL 5.7 до MySQL 8.4. За прехвърляне от MySQL 5.7 първо е необходимо да преминете на версия 8.0, а след това да я обновите до версия 8.4.
- Променени са стойностите по подразбиране на следните настройки InnoDB: innodb_adaptive_hash_index, innodb_buffer_pool_in_core_file, innodb_buffer_pool_instances, innodb_change_buffering, innodb_doublewrite_files, innodb_doublewrite_pages, innodb_flush_method, innodb_io_capacity, innodb_io_capacity_max, innodb_log_buffer_size, innodb_numa_interleave, innodb_page_cleaners, innodb_parallel_read_threads, innodb_purge_threads, innodb_read_io_threads, innodb_use_fdatasync, temptable_max_ram, temptable_max_mmap и temptable_use_mmap.
- Добавена е поддръжка за пакетна компилация за дистрибуции Fedora 40 и Ubuntu 24.04.
- Сървърният плъгин mysql_native_password, осигуряващ удостоверяване чрез пароли, е деактивиран по подразбиране и е обявен за остарял. Вместо mysql_native_password се препоръчва да се премине към използването на плъгина caching_sha2_password, който използва алгоритъм SHA2 за хеширане вместо SHA1. За възстановяване на поддръжката на mysql_native_password може да се използва опцията "—mysql-native-password=ON" или настройката "mysql_native_password=ON".
- Поддръжката на небезопасни протоколи и алгоритми за шифроване е прекратена. Оставени са само TLS v1.2 и TLSv1.3, алгоритми, осигуряващи директна секретност (forward secrecy), шифри и сертификати с SHA2, и алгоритми AES в режим GCM или AEAD.
- Отстранени са свързаните с репликацията SQL изрази, които преди това бяха обявени за остарели поради използването на неправилна терминология: START SLAVE (трябва да се използва START REPLICA); STOP SLAVE (трябва да се използва STOP REPLICA); SHOW SLAVE STATUS (трябва да се използва SHOW REPLICA STATUS); SHOW SLAVE HOSTS (SHOW REPLICAS); RESET SLAVE (RESET REPLICA); CHANGE MASTER TO (CHANGE REPLICATION SOURCE TO); RESET MASTER (RESET BINARY LOGS AND GTIDS); SHOW MASTER STATUS (SHOW BINARY LOG STATUS); PURGE MASTER LOGS (PURGE BINARY LOGS); SHOW MASTER LOGS (SHOW BINARY LOGS).
- Премахнати са предишно обявените за остарели опции, използвани в изразите «CHANGE REPLICATION SOURCE TO» и «START REPLICA», и използващи думата «master», която бе заменена с «source»: SOURCE_AUTO_POSITION (трябва да се използва SOURCE_AUTO_POSITION), SOURCE_HOST (трябва да се използва SOURCE_HOST), SOURCE_BIND (трябва да се използва SOURCE_BIND), SOURCE_USER (SOURCE_USER), SOURCE_PASSWORD (SOURCE_PASSWORD), SOURCE_PORT (SOURCE_PORT), SOURCE_CONNECT_RETRY (SOURCE_CONNECT_RETRY), SOURCE_RETRY_COUNT (SOURCE_RETRY_COUNT), SOURCE_DELAY (SOURCE_DELAY), SOURCE_SSL (SOURCE_SSL), SOURCE_SSL_CA (SOURCE_SSL_CA), SOURCE_SSL_CAPATH (SOURCE_SSL_CAPATH), SOURCE_SSL_CIPHER (SOURCE_SSL_CIPHER), SOURCE_SSL_CRL (SOURCE_SSL_CRL), SOURCE_SSL_CRLPATH (SOURCE_SSL_CRLPATH), SOURCE_SSL_KEY (SOURCE_SSL_KEY), SOURCE_SSL_VERIFY_SERVER_CERT (SOURCE_SSL_VERIFY_SERVER_CERT), SOURCE_TLS_VERSION (SOURCE_TLS_VERSION), SOURCE_TLS_CIPHERSUITES (SOURCE_TLS_CIPHERSUITES), SOURCE_SSL_CERT (SOURCE_SSL_CERT), SOURCE_PUBLIC_KEY_PATH (SOURCE_PUBLIC_KEY_PATH), GET_SOURCE_PUBLIC_KEY (GET_SOURCE_PUBLIC_KEY), SOURCE_HEARTBEAT_PERIOD (SOURCE_HEARTBEAT_PERIOD), SOURCE_COMPRESSION_ALGORITHMS (SOURCE_COMPRESSION_ALGORITHMS), SOURCE_ZSTD_COMPRESSION_LEVEL (SOURCE_ZSTD_COMPRESSION_LEVEL), SOURCE_LOG_FILE (SOURCE_LOG_FILE), SOURCE_LOG_POS (SOURCE_LOG_POS).
- Премахнати са системните променливи, в които се използваха думите «master» и «slave»: Com_replica_start (трябва да се използва Com_replica_start); Com_replica_stop (Com_replica_stop); Com_show_replica_status (Com_show_replica_status); Com_show_replicas (Com_show_replicas); Com_show_binary_log_status (Com_show_binary_log_status); и Com_change_replication_source (Com_change_replication_source).
- Обявена за устаряла е системната променлива group_replication_allow_local_lower_version_join. Премахнати са предишно обявените за остарели опции «—no-dd-upgrade», «—old», «—new», «—language», «—ssl«, «—admin-ssl» и променливите binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals и default_authentication_plugin.
- Премахната е неизползваната таблица INFORMATION_SCHEMA.TABLESPACES.
- Прекратена е поддръжката на използването на стойността LOW_PRIORITY заедно с израза «LOCK TABLES … WRITE».
- Прекратена е поддръжката на използването на модификатора AUTO_INCREMENT заедно с типовете FLOAT и DOUBLE.
- Премахната е утилитата mysql_ssl_rsa_setup — при компилация с OpenSSL. сървър MySQL може автоматично да генерира липсващите SSL- и RSA-файлове при стартиране.
- Премахната е утилитата mysql_upgrade, която не се използва с версия MySQL 8.0.16.
- Премахнати са утилитите mysqlpump, lz4_decompress и zlib_decompress, вместо които трябва да се използва утилитата mysqldump или командите dump на интерактивната оболка.
- Премахнати са плъгините: authentication_fido, authentication_fido_client (трябва да се използва authentication_webauthn); keyring_file (трябва да се използва component_keyring_file); keyring_encrypted_file (трябва да се използва component_keyring_encrypted_file); keyring_oci (трябва да се използва component_keyring_oci).
- Поддръжката на израза ENGINE е прекратена, заедно с различни варианти на 'DROP TABLESPACE' и 'ALTER TABLESPACE'.
- Премахнато е правото 'SET_USER_ID', което вече не може да бъде задавано в изразите GRANT.
- Възстановени са функции от C API: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() и mysql_ssl_set(), част от които бяха преработени с използване на функцията mysql_real_query(). Тези функции бяха премахнати в версия MySQL 8.3, но бяха възстановени за поддръжка в LTS версията MySQL 8.4.
- Отстранени са 26 уязвимости, които могат да бъдат експлоатирани от разстояние. Най-сериозният проблем има ниво на опасност 6.5 и е свързан с уязвимост в openSSL. По-малко опасните уязвимости засягат оптимизатора, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.
Източник: opennet.ru
