A Oracle criou uma nova ramificação do SGBD MySQL 8.4 e publicou uma atualização corretiva MySQL 8.0.37. As compilações do MySQL Community Server 8.4.0 estão disponíveis para todas as principais distribuições do Linux, FreeBSD, macOS e Windows. O lançamento 8.4.0 pertence às ramificações de suporte a longo prazo (LTS), que são lançadas a cada dois anos e suportadas por 5 anos (além de poderem receber mais 3 anos de suporte estendido).
MySQL 8.4.0 é o quarto lançamento criado sob o novo modelo de formação de versões, que prevê a existência de dois tipos de ramificações do MySQL — "Inovação" e "LTS". As ramificações de Inovação, que incluem MySQL 8.1, 8.2 e 8.3, são recomendadas para quem deseja acessar novas funcionalidades mais cedo. Essas ramificações são publicadas a cada 3 meses e são suportadas apenas até a publicação do próximo lançamento significativo (por exemplo, após o surgimento da ramificação 8.4, o suporte à ramificação 8.3 é interrompido). As ramificações LTS são recomendadas para implementações que requerem previsibilidade e manutenção prolongada de um comportamento inalterado. Após a ramificação LTS, uma nova ramificação de Inovação será criada — MySQL 9.0.
Principais alterações no MySQL 8.4:
- O otimizador agora suporta a atualização automática de histogramas, independentemente da execução da operação "ANALYZE TABLE" para a tabela pai. A atualização automática é ativada ao especificar a expressão "AUTO UPDATE" durante a execução da operação "ANALYZE TABLE", e desativada ao especificar a expressão "MANUAL UPDATE", que é usada por padrão.
- As opções "—keyring-migration-from-component", "—keyring-migration-source" e "—keyring-migration-destination" foram adicionadas para migração do componente keyring para o plugin keyring.
- Foi adicionada uma nova privilégio FLUSH_PRIVILEGES, que, ao contrário do privilégio anteriormente disponível RELOAD, concede ao usuário direitos apenas para realizar a operação "FLUSH PRIVILEGES".
- Foi adicionada uma nova privilégio OPTIMIZE_LOCAL_TABLE, permitindo ao usuário realizar operações "OPTIMIZE LOCAL TABLE" e "OPTIMIZE NO_WRITE_TO_BINLOG TABLE".
- Os valores padrão das variáveis de sistema group_replication_consistency e group_replication_exit_state_action foram alterados. A variável group_replication_consistency agora é configurada para o valor BEFORE_ON_PRIMARY_FAILOVER em vez de EVENTUAL, enquanto a variável group_replication_exit_state_action é configurada para OFFLINE_MODE em vez de READ_ONLY.
- As compilações fornecidas com a biblioteca OpenSSL embutida agora utilizam a nova versão OpenSSL 3.0.13.
- A atualização direta do MySQL 5.7 para o MySQL 8.4 foi interrompida. Agora, para migrar do MySQL 5.7, você deve primeiro passar para a versão 8.0 e, em seguida, atualizá-la para a versão 8.4.
- Os valores padrão das seguintes configurações do InnoDB foram alterados: 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 e temptable_use_mmap.
- Adicionada a compatibilidade para pacotes de distribuição para Fedora 40 e Ubuntu 24.04.
- O plugin de servidor mysql_native_password, que permite autenticação via senhas, foi desativado por padrão e declarado obsoleto. Em vez do mysql_native_password, recomenda-se o uso do plugin caching_sha2_password, que utiliza o algoritmo SHA2 para hashing, em vez do SHA1. Para reabilitar o suporte ao mysql_native_password, pode-se usar a opção "--mysql-native-password=ON" ou a configuração "mysql_native_password=ON".
- O suporte a protocolos e algoritmos de criptografia inseguros foi interrompido. Somente TLS v1.2 e TLS v1.3, algoritmos que garantem a secreta transitória (forward secrecy), cifrados e certificados com SHA2, e algoritmos AES em modo GCM ou AEAD foram mantidos.
- As expressões SQL relacionadas à replicação, que foram anteriormente declaradas obsoletas devido ao uso de terminologia imprópria, foram removidas: START SLAVE (deve-se usar START REPLICA); STOP SLAVE (deve-se usar STOP REPLICA); SHOW SLAVE STATUS (deve-se usar 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).
- As opções anteriormente declaradas obsoletas, que eram usadas nas expressões "CHANGE REPLICATION SOURCE TO" e "START REPLICA", foram removidas, substituindo a palavra "master" por "source": SOURCE_AUTO_POSITION (deve-se usar SOURCE_AUTO_POSITION), SOURCE_HOST (deve-se usar SOURCE_HOST), SOURCE_BIND (deve-se usar 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).
- As variáveis de sistema que usavam as palavras "master" e "slave" foram removidas: Com_replica_start (deve-se usar Com_replica_start); Com_replica_stop (deve-se usar Com_replica_stop); Com_show_replica_status (deve-se usar Com_show_replica_status); Com_show_replicas (deve-se usar Com_show_replicas); Com_show_binary_log_status (deve-se usar Com_show_binary_log_status); e Com_change_replication_source (deve-se usar Com_change_replication_source).
- A variável de sistema group_replication_allow_local_lower_version_join foi declarada obsoleta. As opções anteriormente declaradas obsoletas "—no-dd-upgrade", "—old", "—new", "—language", "—ssl"—admin-ssl" e as variáveis binlog_transaction_dependency_tracking, group_replication_recovery_complete_at, avoid_temporal_upgrade, show_old_temporals e default_authentication_plugin foram removidas.
- A tabela não utilizada INFORMATION_SCHEMA.TABLESPACES foi removida.
- O suporte ao uso do valor LOW_PRIORITY junto com a expressão "LOCK TABLES … WRITE" foi descontinuado.
- O suporte ao modificador AUTO_INCREMENT junto aos tipos FLOAT e DOUBLE foi descontinuado.
- A utilidade mysql_ssl_rsa_setup foi removida — na construção com OpenSSL. servidor MySQL pode gerar automaticamente os arquivos SSL e RSA que estiverem faltando ao iniciar.
- A utilidade mysql_upgrade foi removida, pois não é utilizada na versão do MySQL 8.0.16.
- As utilidades mysqlpump, lz4_decompress e zlib_decompress foram removidas, devendo-se usar a utilidade mysqldump ou os comandos de despejo da shell interativa.
- Os plugins foram removidos: authentication_fido, authentication_fido_client (deve-se usar authentication_webauthn); keyring_file (deve-se usar component_keyring_file); keyring_encrypted_file (deve-se usar component_keyring_encrypted_file); keyring_oci (deve-se usar component_keyring_oci).
- O suporte à expressão ENGINE foi encerrado, junto com várias opções como 'DROP TABLESPACE' e 'ALTER TABLESPACE'.
- A privilégio 'SET_USER_ID' foi removida e não pode mais ser especificada nas expressões GRANT.
- As funções da API foram retornadas: mysql_kill(), mysql_list_fields(), mysql_list_processes(), mysql_refresh(), mysql_reload(), mysql_shutdown() e mysql_ssl_set(), algumas das quais foram reestruturadas usando a função mysql_real_query(). Essas funções foram removidas na versão MySQL 8.3, mas foram restauradas para suporte na versão LTS MySQL 8.4.
- Foram corrigidas 26 vulnerabilidades que poderiam ser exploradas remotamente. O problema mais sério tem um nível de gravidade de 6.5 e está relacionado a uma vulnerabilidade no openSSL. Vulnerabilidades menos críticas afetam o otimizador, InnoDB, Thread Pooling, o Plugin de Replicação em Grupo, o Plugin de Auditoria, DML e mysqldump.
Fonte: opennet.ru
