删除了服务器选项和变量。 支持许多服务器选项和变量 MySQL 8.4 中已删除以前版本的 MySQL。 尝试在 MySQL 8.4 中设置它们中的任何一个都会引发一个 错误。这些选项和变量如下所示:
-
binlog_transaction_dependency_tracking
: 在 MySQL 8.0.35 和 MySQL 8.2.0 中已弃用。没有 计划替换此变量或其功能, 它已设为服务器内部。在 MySQL 8.4 中 (及更高版本)中,当使用多线程副本时, 源 mysqld 始终使用 writesets 生成二进制日志的依赖关系信息; 这与 在 早期版本的 设置为 具有相同的效果 MySQL 的。binlog_transaction_dependency_tracking``WRITESET
-
group_replication_recovery_complete_at
: 在 MySQL 8.0.34 中已弃用。在 MySQL 8.4 及更高版本中, 在 Distributed Recovery 过程中应用的策略 始终仅在新成员 接收、认证和应用所有符合以下条件的交易 发生在它加入该组织之前;这是 等同于在上一个 MySQL 版本。group_replication_recovery_complete_at``TRANSACTIONS_APPLIED
-
avoid_temporal_upgrade
和 : 这两个 变量在 MySQL 5.6 中已弃用;他们都不是 在最新版本的 MySQL 中有任何影响。双 变量已被删除;目前尚无计划 替换它们中的任何一个。show_old_temporals
-
--no-dd-upgrade
:在 MySQL 中已弃用 8.0.16 现已删除。请改用 --upgrade=NONE。 -
--old
和 :两者 在 MySQL 8.0.35 和 MySQL 8.2.0 中已弃用,现在 删除。--new
-
--language
:在 MySQL 5.5 中已弃用, 现在被删除了。 -
和 server 选项,以及 和 服务器系统变量, 在 MySQL 8.0.26 中已弃用。它们都被删除了 此版本。请改用 --tls-version 和 --admin-tls-version。
--ssl``--admin-ssl``have_ssl``have_openssl
-
MySQL 8.0.27 中已弃用的 system 变量已删除 从 MySQL 8.4.0 开始。请改用 authentication_policy。
default_authentication_plugin
作为删除 的一部分,该 HAS 的语法 已更改。有关更多信息,请参阅 authentication_policy 的描述。
default_authentication_plugin``authentication_policy
-
–skip-host-cache 服务器选项。 此选项已被删除;请改用 --host-cache-size=0 启动服务器。参见第 7.1.12.3 节 “DNS 查找和主机缓存”。
-
–innodb 和 --skip-innodb 服务器选项。 这些选项已被删除。InnoDB 存储引擎是 始终启用,并且无法禁用它。
-
**–character-set-client-handshake 和 --old-style-user-limits 服务器 选项。**这些选项以前用于兼容性 使用非常旧版本的 MySQL,这些版本不再是 支持或维护,因此不再服务于任何 有用的目的。
-
FLUSH HOSTS 语句。 声明 在 MySQL 8.0.23 中已弃用,已被删除。清除 主机缓存,发出 TRUNCATE TABLE performance_schema.host_cache 或 mysqladmin flush-hosts。
FLUSH HOSTS
过时的复制选项和变量。 与 MySQL 相关的许多选项和变量 复制在以前的 MySQL 版本中已弃用, ,并已从 MySQL 8.4 中删除。 现在,尝试使用其中任何一个都会导致服务器 引发语法错误。这些选项和变量是 此处列出:
-
--slave-rows-search-algorithms
:这 复制应用程序用于查找的算法 应用更新或删除时的表行现在是 always 和 is 用户不再配置。HASH_SCAN,INDEX_SCAN
-
log_bin_use_v1_events
:这允许 要复制的运行 MySQL 5.7 及更高版本的源服务器 到不再存在的早期版本的 MySQL 支持或维护。 -
--relay-log-info-file
, , , : 的使用 应用程序元数据存储库和 连接元数据存储库已被 崩溃安全表,并且不再受支持。参见第 19.2.4.2 节“复制元数据存储库”。--relay-log-info-repository``--master-info-file``--master-info-repository
-
transaction_write_set_extraction
-
group_replication_ip_whitelist
:请改用 group_replication_ip_allowlist。 -
group_replication_primary_member
:不 需要更长的时间;请改为检查 Performance Schema replication_group_members 表的列。MEMBER_ROLE
复制 SQL 语法。 MySQL Replication 中使用的许多 SQL 语句,其中 在早期版本的 MySQL 中已弃用,不再 在 MySQL 8.4 中受支持。尝试使用其中任何一个 statements 现在会产生语法错误。这些语句 可分为两组:与源相关的 servers 以及引用副本的服务器,如下所示:
作为这项工作的一部分,CREATE 的选项 EVENT 和 ALTER EVENT 现已弃用,并被 取代。相应的 term 也是现在 已弃用,并且不再用于事件描述中,例如 在信息架构 EVENTS 表中; 现在显示 相反。DISABLE ON SLAVE``DISABLE ON REPLICA``SLAVESIDE_DISABLED``REPLICA_SIDE_DISABLED
-
已删除的与 复制源服务器 中,如下所示:
-
CHANGE MASTER TO
:使用 CHANGE REPLICATION SOURCE TO. -
RESET MASTER
:使用 RESET BINARY LOGS 和 GTID 中。 -
SHOW MASTER STATUS
:使用 SHOW BINARY LOG STATUS 的 STATUS 中。 -
PURGE MASTER LOGS
:使用 PURGE BINARY LOGS。 -
SHOW MASTER LOGS
:使用 SHOW BINARY LOGS。
-
-
列出了已删除的与副本相关的 SQL 语句 这里:
-
START SLAVE
:使用 START REPLICA。 -
STOP SLAVE
:使用 STOP REPLICA。 -
SHOW SLAVE STATUS
:使用 SHOW REPLICA STATUS。 -
SHOW SLAVE HOSTS
:使用 SHOW REPLICAS。 -
RESET SLAVE
:使用 RESET REPLICA。
-
前面列出的所有语句都已从 MySQL 测试程序和文件,以及来自任何其他 内部使用。
此外,许多已弃用的选项以前 受 CHANGE REPLICATION SOURCE 支持 TO 和 START REPLICA 已被删除,不再是 被服务器接受。每个 接下来列出了这些 SQL 语句。
-
此处列出了从 中删除的选项:
CHANGE REPLICATION SOURCE TO
-
MASTER_AUTO_POSITION
:使用 SOURCE_AUTO_POSITION。 -
MASTER_HOST
:使用 SOURCE_HOST。 -
MASTER_BIND
:使用 SOURCE_BIND。 -
MASTER_UseR
:使用 SOURCE_UseR。 -
MASTER_PASSWORD
:使用 SOURCE_PASSWORD。 -
MASTER_PORT
:使用 SOURCE_PORT。 -
MASTER_CONNECT_RETRY
:使用 SOURCE_CONNECT_RETRY。 -
MASTER_RETRY_COUNT
:使用 SOURCE_RETRY_COUNT。 -
MASTER_DELAY
:使用 SOURCE_DELAY。 -
MASTER_SSL
:使用 SOURCE_SSL。 -
MASTER_SSL_CA
:使用 SOURCE_SSL_CA。 -
MASTER_SSL_CAPATH
:使用 SOURCE_SSL_CAPATH。 -
MASTER_SSL_CIPHER
:使用 SOURCE_SSL_CIPHER。 -
MASTER_SSL_CRL
:使用 SOURCE_SSL_CRL。 -
MASTER_SSL_CRLPATH
:使用 SOURCE_SSL_CRLPATH。 -
MASTER_SSL_KEY
:使用 SOURCE_SSL_KEY。 -
MASTER_SSL_VERIFY_SERVER_CERT
: 使用 SOURCE_SSL_VERIFY_SERVER_CERT。 -
MASTER_TLS_VERSION
:使用 SOURCE_TLS_VERSION。 -
MASTER_TLS_CIPHERSUITES
:使用 SOURCE_TLS_CIPHERSUITES。 -
MASTER_SSL_CERT
:使用 SOURCE_SSL_CERT。 -
MASTER_PUBLIC_KEY_PATH
:使用 SOURCE_PUBLIC_KEY_PATH。 -
GET_MASTER_PUBLIC_KEY
:使用 GET_SOURCE_PUBLIC_KEY。 -
MASTER_HEARTBEAT_PERIOD
:使用 SOURCE_HEARTBEAT_PERIOD。 -
MASTER_COMPRESSION_ALGORITHMS
: 使用 SOURCE_COMPRESSION_ALGORITHMS。 -
MASTER_ZSTD_COMPRESSION_LEVEL
: 使用 SOURCE_ZSTD_COMPRESSION_LEVEL。 -
MASTER_LOG_FILE
:使用 SOURCE_LOG_FILE。 -
MASTER_LOG_POS
:使用 SOURCE_LOG_POS。
-
-
从语句中删除的选项如下所示:
START REPLICA
-
MASTER_LOG_FILE
:用。SOURCE_LOG_FILE
-
MASTER_LOG_POS
:用。SOURCE_LOG_POS
-
-
系统变量和 NULL. 它不用于 MySQL 服务器,也不支持 MySQL 服务器 将 startup 选项设置为 NULL () 并拥有它 被服务器解释为 SQL ,并且不应该是不可能的。 MySQL 8.1(及更高版本)明确不允许设置 启动选项添加到此 fashion,并拒绝尝试处理错误。 尝试设置相应的服务器系统 在 mysql 客户端中使用 SET 或类似的变量是 也被拒绝了。
--my-option=NULL``NULL``NULL``NULL
以下列表中的服务器系统变量为 从刚才描述的限制中除外:
-
admin_ssl_ca
-
admin_ssl_capath
-
admin_ssl_cert
-
admin_ssl_cipher
-
admin_tls_ciphersuites
-
admin_ssl_key
-
admin_ssl_crl
-
admin_ssl_crlpath
-
basedir
-
character_sets_dir
-
ft_stopword_file
-
group_replication_recovery_tls_ciphersuites
-
init_file
-
lc_messages_dir
-
plugin_dir
-
relay_log
-
relay_log_info_file
-
replica_load_tmpdir
-
ssl_ca
-
ssl_capath
-
ssl_cert
-
ssl_cipher
-
ssl_crl
-
ssl_crlpath
-
ssl_key
-
socket
-
tls_ciphersuites
-
tmpdir
另请参见第 7.1.8 节 “服务器系统变量”。
-
-
带有初始美元符号的标识符。 使用美元符号 () 作为 未加引号的标识符的初始字符为 在 MySQL 8.0 中已弃用,在 MySQL 中受到限制 8.1 及更高版本;使用不带引号的标识符开头 带有一个美元符号,并包含一个或多个美元 signs(除了第一个)现在会生成一个 语法错误。
$
如果 开头的未加引号的标识符不受此限制的影响,则它们不受此限制的影响 包含任何其他字符。
$``$
参见第 11.2 节 “Schema 对象名称”。
此外,作为这项工作的一部分,以下服务器状态 之前弃用的变量已被删除。他们 在此处列出,以及它们的替代品:
-
Com_slave_start
:用。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
-
Com_change_master
:用。Com_change_replication_source
刚刚列为 removed 的变量不再显示在 SHOW 等语句的输出 STATUS 的 STATUS 中。另请参阅 Com_xxx 变量。
插件。 MySQL 8.4.0 中删除了许多插件,它们是 在此处列出,以及任何系统变量和其他 与他们关联的功能也被删除,或者 否则受插件移除影响:
-
authentication_fido
和插件: 请改用插件。参见第 8.4.1.11 节“ WebAuthn 可插入身份验证”。authentication_fido_client``authentication_webauthn
服务器 system 变量、mysql 客户端选项和 CMake 选项也是 删除。
authentication_fido_rp_id``--fido-register-factor``-DWITH_FIDO
-
keyring_file
plugin:使用组件 相反。参见第 8.4.4.4 节 “使用基于 component_keyring_file 文件的密钥环组件”。component_keyring_file
系统变量 也被删除。此外,CMake 选项 和 已被删除。
keyring_file_data``-DINSTALL_MYSQLKEYRINGDIR``-DWITH_KEYRING_TEST
-
keyring_encrypted_file
plugin:使用 组件。参见第 8.4.4.5 节 “使用 component_keyring_encrypted_file 加密的基于文件的密钥环 组件”。component_keyring_encrypted_file
和 系统变量也被删除。
keyring_encrypted_file_data``keyring_encrypted_file_password
-
keyring_oci
plugin:使用组件 相反。请参见第 8.4.4.9 节 “使用 Oracle Cloud Infrastructure Vault 密钥环组件”。component_keyring_oci
还删除了以下服务器系统变量:、、、、、 和 。
keyring_oci_ca_certificate``keyring_oci_compartment``keyring_oci_encryption_endpoint``keyring_oci_key_file``keyring_oci_key_fingerprint``keyring_oci_management_endpoint``keyring_oci_master_key``keyring_oci_secrets_endpoint``keyring_oci_tenancy``keyring_oci_user``keyring_oci_vaults_endpoint``keyring_oci_virtual_vault
-
openssl_udf
plugin:使用 MySQL 企业加密 () 组件;参见第 8.6 节“ MySQL 企业加密”。component_enterprise_encryption
支持弱密码。 配置加密连接时,MySQL 8.4.0 和 以后不再允许指定任何不 满足以下要求:
-
符合正确的 TLS 版本(TLS v1.2 或 TLSv1.3,如 适当)
-
提供完美的正向保密
-
在密码和/或证书中使用 SHA2
-
在 GCM 或任何其他 AEAD 算法或模式中使用 AES
这对设置以下系统有影响 变量:
-
ssl_cipher
-
admin_ssl_cipher
-
tls_ciphersuites
-
admin_tls_ciphersuites
请参阅这些变量的描述以了解其允许的 MySQL 8.4 中的值以及更多信息。
注意
libmysqlclient
持续支持 不满足 以保留连接到旧版本的能力 的 MySQL。
**INFORMATION_SCHEMA。TABLESPACES 的 TABLESPACES 中。**该表实际上并未使用,已在 MySQL 8.0.22 现已删除。INFORMATION_SCHEMA.TABLESPACES
注意
对于 NDB 表, Information Schema FILES table 提供与表空间相关的信息。
对于 InnoDB 表, 信息架构 INNODB_TABLESPACES 和 INNODB_DATAFILES 表 提供表空间元数据。
DROP TABLESPACE 和 ALTER TABLESPACE: ENGINE 子句。 DROP TABLESPACE 和 ALTER TABLESPACE 语句的子句 在 MySQL 8.0 中已弃用。在 MySQL 8.4 中,它不再是 supported,如果尝试使用它,则会导致错误 with 或 ALTER TABLESPACE ...DROP DATAFILE。 也不再支持 的所有其他变体 , 此处列出了两个例外:ENGINE``DROP TABLESPACE``ENGINE``ALTER TABLESPACE
-
ALTER TABLESPACE ... ADD DATAFILE ENGINE={NDB|NDBCLUSTER}
-
ALTER UNDO TABLESPACE ... SET {ACTIVE|INACTIVE} ENGINE=INNODB
有关更多信息,请参阅这些文档 语句。
LOW_PRIORITY LOCK TABLES …写。 LOCK TABLES 的子句 ...WRITE 语句自那时起就没有效果了 MySQL 5.5 的 5.5 版本,并在 MySQL 5.6 中弃用。不是 在 MySQL 8.4 中不再受支持;现在将其包含在 中会导致语法错误。LOW_PRIORITY``LOCK TABLES
EXPLAIN FORMAT=JSON 格式版本控制。 现在可以在 2 个 版本的“MissAV” 使用此版本中引入的 explain_json_format_version 服务器系统变量的语句使用的 JSON 输出格式。设置 this 变量会导致服务器 使用版本 1,这是线性格式,始终是 用于 MySQL 8.2 中此类语句的输出,并且 早些时候。这是 MySQL 中的默认值和格式 8.4. 设置为 Version 2 格式 使用;此 JSON 输出格式基于访问路径, ,旨在提供更好的兼容性 MySQL Optimizer 的未来版本。EXPLAIN FORMAT=JSON``1``explain_json_format_version``2
有关更多信息,请参阅 获取执行计划信息 信息和示例。
捕获 EXPLAIN FORMAT=JSON 输出。 扩展为 一个选项,该选项提供了 能够将 JSON 格式的输出存储在用户变量中,以便使用 使用 MySQL JSON 函数,如下所示:EXPLAIN FORMAT=JSON``INTO``EXPLAIN
mysql> EXPLAIN FORMAT=JSON INTO @myex SELECT name FROM a WHERE id = 2;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT JSON_EXTRACT(@myex, "$.query_block.table.key");
+------------------------------------------------+
| JSON_EXTRACT(@myex, "$.query_block.table.key") |
+------------------------------------------------+
| "PRIMARY" |
+------------------------------------------------+
1 row in set (0.01 sec)
仅当语句还包含 ;否则,会出现语法错误 结果。此要求不受 explain_format 值的影响。EXPLAIN``FORMAT=JSON
INTO
可以与任何可解释的 语句,但 .它不能与 一起使用。EXPLAIN FOR CONNECTION``EXPLAIN ANALYZE
有关更多信息和示例,请参阅获取执行计划信息。
EXPLAIN 的 SCHEMA 中。 向 EXPLAIN 语句添加了一个选项。这 语法如下所示,其中 stmt
是可解释的 陈述:FOR SCHEMA
EXPLAIN [options] FOR SCHEMA schema_name stmt
这会导致 stmt
像 在命名架构中。
FOR DATABASE
也支持作为 同义词。
此选项与 不兼容。FOR CONNECTION
有关更多信息,请参阅 获取执行计划信息 信息。
保留客户评论。 在 MySQL 8.0 中,从 mysql 客户端剥离 Comments 是默认行为; 默认设置已更改以保留此类注释。
要启用注释剥离,就像在 MySQL 8.0 及更早版本,使用 --skip-comments 启动 mysql 客户端。
AUTO_INCREMENT 列和浮点列。 修饰符的使用 在 CREATE TABLE 和 ALTER TABLE 语句中,FLOAT 和 DOUBLE 列为 在 MySQL 8.0 中已弃用;对它的支持已删除 在 MySQL 8.4 中,它会引发ER_WRONG_FIELD_SPEC(不正确的列说明符 列)。AUTO_INCREMENT
在从以前的系列升级到 MySQL 8.4 之前,_必须_修复任何包含 or 列的表 with so so table no longer 使用其中任何一个。否则,升级将失败 .FLOAT``DOUBLE``AUTO_INCREMENT
mysql_ssl_rsa_setup 实用程序。 已删除 MySQL 8.0.34 中弃用的 mysql_ssl_rsa_setup 实用程序。为 使用 OpenSSL 编译的 MySQL 发行版,MySQL server 可以自动执行缺失的 SSL 和 RSA 文件。有关以下内容,请参见第 8.3.3.1 节“使用 MySQL 创建 SSL 和 RSA 证书和密钥” 更多信息。
MySQL 权限。 新增 SET_ANY_DEFINER 权限(用于创建定义器对象)和 ALLOW_NONEXISTENT_DEFINER 权限(用于孤立对象保护)。这些一起 权限与已弃用的 SET_USER_ID 权限共存。
SET_USER_ID特权。 权限(已弃用) 在 MySQL 8.2.0 中,已删除。在 GRANT 语句中使用现在会导致 语法错误SET_USER_ID
您可以使用 SET_ANY_DEFINER 权限,而不是 。 定义者对象创建,以及用于孤立对象保护的 ALLOW_NONEXISTENT_DEFINER 权限。SET_USER_ID
生成孤立的 SQL 对象需要这两个权限 使用 CREATE PROCEDURE、CREATE FUNCTION、CREATE TRIGGER、CREATE EVENT 或 CREATE VIEW。
–abort-slave-event-count 和 --disconnect-slave-event-count 服务器 选项。 MySQL 服务器启动选项 和 ,以前称为 在测试中使用,在 MySQL 8.0 中已弃用,并且具有 已在此版本中删除。现在尝试使用这些选项中的任何一个启动 mysqld 导致错误。--abort-slave-event-count``--disconnect-slave-event-count
mysql_upgrade 实用程序。 已删除 MySQL 8.0.16 中弃用的 mysql_upgrade 实用程序。
mysqlpump 实用程序。 mysqlpump 实用程序 以及它的辅助工具 lz4_decompress 和 zlib_decompress, 在 MySQL 8.0.34 中已弃用,已被删除。请改用 mysqldump 或 MySQL Shell 的 dump 实用程序。
过时的 CMake 选项。 使用 CMake 编译服务器的以下选项 已过时并已被删除:
-
USE_LD_LLD
:请改用 WITH_LD=lld。 -
WITH_BOOST
、 、 :这些选项 不再需要;MySQL 现在包含并使用 从源码编译时捆绑的 Boost 版本。DOWNLOAD_BOOST``DOWNLOAD_BOOST_TIMEOUT
删除了关键字。 自 MySQL 8.0 以来,MySQL 8.4 中删除的关键字。保留 关键字标有 (R)。
GET_MASTER_PUBLIC_KEY
、 、 、 (R)、 、MASTER_AUTO_POSITION``MASTER_BIND``MASTER_COMPRESSION_ALGORITHMS``MASTER_CONNECT_RETRY``MASTER_DELAY``MASTER_HEARTBEAT_PERIOD``MASTER_HOST``MASTER_LOG_FILE``MASTER_LOG_POS``MASTER_PASSWORD``MASTER_PORT``MASTER_PUBLIC_KEY_PATH``MASTER_RETRY_COUNT``MASTER_SSL``MASTER_SSL_CA``MASTER_SSL_CAPATH``MASTER_SSL_CERT``MASTER_SSL_CIPHER``MASTER_SSL_CRL``MASTER_SSL_CRLPATH``MASTER_SSL_KEY``MASTER_SSL_VERIFY_SERVER_CERT``MASTER_TLS_CIPHERSUITES``MASTER_TLS_VERSION``MASTER_USER``MASTER_ZSTD_COMPRESSION_LEVEL
分区键中的索引前缀。 允许带有索引前缀的列出现在 MySQL 8.0 中分区表的分区键,以及 在创建时引发了没有其他效果的警告, 更改或升级分区表。此类列 在分区表中不再允许,并且使用 分区键中的任何此类列都会导致 它们碰巧被拒绝并显示错误。