Oracle har dannet en ny gren af databasesystemet MySQL 8.4 og offentliggjort en korrigerende opdatering af MySQL 8.0.37. Bygningerne af MySQL Community Server 8.4.0 er forberedt til alle hoveddistributioner af Linux, FreeBSD, macOS og Windows. Udgivelsen 8.4.0 er klassificeret under langsigtede supportgrene (LTS), som udgives hvert andet år og understøttes i 5 år (plus mulighed for yderligere 3 år med udvidet support).
MySQL 8.4.0 er den fjerde udgivelse, der er dannet under den nye model for udgivelsesdannelse, som omfatter to typer MySQL-grene — «Innovation» og «LTS». Innovation-grenene, som inkluderer MySQL 8.1, 8.2 og 8.3, anbefales til dem, der ønsker tidlig adgang til nye funktioner. Disse grene offentliggøres hver 3. måned og understøttes kun indtil den næste betydningsfulde udgivelse offentliggøres (for eksempel efter udgivelsen af gren 8.4 stoppes understøttelsen af gren 8.3). LTS-grene anbefales til implementeringer, der har brug for forudsigelighed og langvarig opretholdelse af uændret adfærd. Den næste Innovation-gren vil blive dannet efter LTS-grenen — MySQL 9.0.
Vigtige ændringer i MySQL 8.4:
- Optimereren har fået tilføjet støtte til automatisk opdatering af histogrammer, uanset om operationen «ANALYZE TABLE» udføres for den overordnede tabel. Den automatiske opdatering aktiveres ved at angive udtrykket «AUTO UPDATE» under udførelsen af operationen «ANALYZE TABLE», og deaktiveres ved at angive udtrykket «MANUAL UPDATE», som bruges som standard.
- Der er tilføjet optioner «—keyring-migration-from-component», «—keyring-migration-source» og «—keyring-migration-destination» til migration fra keyring-komponenten til keyring-plugin.
- Der er tilføjet en ny privilegium FLUSH_PRIVILEGES, som i modsætning til den tidligere tilgængelige privilegium RELOAD giver brugeren rettigheder til kun at udføre operationen «FLUSH PRIVILEGES».
- Der er tilføjet en ny privilegium OPTIMIZE_LOCAL_TABLE, der gør det muligt for brugeren at udføre operationer «OPTIMIZE LOCAL TABLE» og «OPTIMIZE NO_WRITE_TO_BINLOG TABLE».
- Standardværdierne for de systemiske variabler group_replication_consistency og group_replication_exit_state_action er ændret. Variablen group_replication_consistency indstilles nu til værdien BEFORE_ON_PRIMARY_FAILOVER i stedet for EVENTUAL, mens variablen group_replication_exit_state_action indstilles til værdien OFFLINE_MODE i stedet for READ_ONLY.
- I bygningerne leveret med den indbyggede OpenSSL-bibliotek er den nye version OpenSSL 3.0.13 aktiveret.
- Direkte opgradering fra MySQL 5.7 til MySQL 8.4 er stoppet. For at opgradere fra MySQL 5.7 skal man først opgradere til version 8.0, før man derefter opgraderer til version 8.4.
- Standardværdier for følgende InnoDB-indstillinger er ændret: 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 og temptable_use_mmap.
- Understøttelse af pakkeopbygning til distributioner af Fedora 40 og Ubuntu 24.04 er blevet tilføjet.
- Den serverplugin 'mysql_native_password', der giver autentifikation ved hjælp af adgangskoder, er som standard deaktiveret og erklæret forældet. Det anbefales at skifte til brugen af plugin'en 'caching_sha2_password', der anvender SHA2-algoritmen til hashing i stedet for SHA1. For at genaktivere understøttelsen af 'mysql_native_password' kan man bruge indstillingen «—mysql-native-password=ON» eller opsætningen «mysql_native_password=ON».
- Understøttelse af usikre protokoller og krypteringsalgoritmer er ophørt. Kun TLS v1.2 og TLSv1.3, algoritmer der sikrer fremadskridende hemmelighed (forward secrecy), samt krypteringsmetoder og certifikater med SHA2 og AES i GCM- eller AEAD-tilstand er blevet efterladt.
- SQL-udtryk relateret til replikation, som tidligere var erklæret forældede på grund af brugen af upassende terminologi, er blevet fjernet: START SLAVE (bør anvendes START REPLICA); STOP SLAVE (bør anvendes STOP REPLICA); SHOW SLAVE STATUS (bør anvendes 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).
- Tidligere erklærede forældede muligheder, der blev brugt i udtryk som «CHANGE REPLICATION SOURCE TO» og «START REPLICA», og som brugte ordet «master», er blevet erstattet med «source»: SOURCE_AUTO_POSITION (skal bruge SOURCE_AUTO_POSITION), SOURCE_HOST (skal bruge SOURCE_HOST), SOURCE_BIND (skal bruge 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).
- Systemvariabler, der brugte ordene «master» og «slave», er blevet fjernet: Com_slave_start (skal bruge Com_replica_start); Com_slave_stop (Com_replica_stop); Com_show_slave_status (Com_show_replica_status); Com_show_slave_hosts (Com_show_replicas); Com_show_master_status (Com_show_binary_log_status); og Com_change_master (Com_change_replication_source).
- Systemvariablen group_replication_allow_local_lower_version_join er blevet erklæret forældet. Tidligere forældede muligheder som «—no-dd-upgrade», «—old», «—new», «—language», «—ssl«, «—admin-ssl» og variablerne binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals og default_authentication_plugin er blevet fjernet.
- Den ubrugte tabel INFORMATION_SCHEMA.TABLESPACES er blevet fjernet.
- Understøttelsen af at bruge værdien LOW_PRIORITY sammen med udtrykket «LOCK TABLES … WRITE» er blevet stoppet.
- Understøttelsen af at bruge modificatoren AUTO_INCREMENT sammen med typerne FLOAT og DOUBLE er blevet stoppet.
- Programmet mysql_ssl_rsa_setup er blevet fjernet — ved bygge med OpenSSL. server MySQL kan automatisk generere manglende SSL- og RSA-filer ved opstart.
- Programmet mysql_upgrade, som ikke bruges sammen med udgaven MySQL 8.0.16, er blevet fjernet.
- Programmerne mysqlpump, lz4_decompress og zlib_decompress er blevet fjernet, og man bør i stedet bruge programmet mysqldump eller dump-kommandoerne i den interaktive shell.
- Plugins er blevet fjernet: authentication_fido, authentication_fido_client (skal bruge authentication_webauthn); keyring_file (skal bruge component_keyring_file); keyring_encrypted_file (skal bruge component_keyring_encrypted_file); keyring_oci (skal bruge component_keyring_oci).
- Understøttelse af udtryk ENGINE er blevet afbrudt sammen med forskellige varianter af «DROP TABLESPACE» og «ALTER TABLESPACE».
- Privilegiet «SET_USER_ID» er blevet fjernet og kan ikke længere angives i GRANT-udsagn.
- Funktioner med API er blevet genindført: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() og mysql_ssl_set(), hvoraf nogle er blevet omarbejdet ved hjælp af funktionen mysql_real_query(). Disse funktioner blev fjernet i MySQL 8.3-versionen, men er blevet genskabt til understøttelse i LTS-versionen MySQL 8.4.
- 26 sårbarheder, der kan udnyttes eksternt, er blevet rettet. Det mest alvorlige problem har en faregrad på 6,5 og er relateret til en sårbarhed i openSSL. Mindre alvorlige sårbarheder påvirker optimizeren, InnoDB, Thread Pooling, Group Replication Plugin, Audit Plugin, DML, mysqldump.
Kilde: opennet.ru
