MySQL新的进化版8.2.0于2023年10月25日发行,让我们一起快速浏览一下该版本发生哪些变化。
审计日志 * 添加了新的“audit_log_filter_uninstall.sql”脚本,简化删除“MySQL Enterprise Audit”的过程。认证 * “mysql_native_password”插件已弃用,用户可以在服务器启动时将其禁用。如果服务器端“mysql_native_password”认证方法被禁用,使用该方法的旧的客户端插件将无法连接服务器,并在错误日志中写入“Access denied”消息。
* MySQL 企业版现在支持MySQL服务器使用智能卡、安全设备等方法进行身份验证。该身份验证方法基于FIDO 和 FIDO2 标准。它使用服务器端的“authentication_webauthn”和客户端的“authentication_webauthn_client”实现C API。
* 客户端库现在支持使用查询预处理语句的属性,并引入一个新的 C API声明函数“mysql_stmt_bind_named_param()”,用以替换现已弃用的“mysql_stmt_bind_param()”函数。与 “mysql_stmt_bind_param() ”不同,“mysql_stmt_bind_named_param()” 允许绑定预处理语句的未命名和命名参数。
* mysql_ssl_set() C API 函数已弃用,并且在未来的 MySQL 版本中删除。与其等效的函数为“mysql_options()” TLS 选项。
弃用和删除
* 兼容性的变化:“WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()” SQL 函数,在 MySQL 8.0 中已弃用,现已被删除。用户可以使用“WAIT_FOR_EXECUTED_GTID_SET()”替代。
* 复制:“binlog_transaction_dependency_tracking”服务器系统变量现已弃用,并将在 MySQL 的未来版本中删除。设置或检索该变量的值会触发警告。
* “expire_logs_days”服务器系统变量,在 MySQL 8.0 中已弃用,现已删除。用户可以使用“binlog_expire_logs_seconds”替代。
* 在 MySQL 8.0 中已弃用的服务器启动选项“--abort-slave-event-count”和“--disconnect-slave-event-count”,现已删除。
* 服务器系统变量“old”和“new”现在已弃用,将在 MySQL 的未来版本中删除。
* “--character-set-client-handshake”服务器选项,现已弃用,并将在 MySQL 的未来版本中删除。
* 使用字符 “%” 和 “_” 作为通配符,对数据库进行授权功能现已弃用,未来将删除通配符功能。另外,服务器将“%”视为“localhost”的同义词,检查权限时(即授予 'myuser'@'%' 的权限也予'myuser'@'localhost') 也从 MySQL 8.2.0开始被弃用,未来版本删除。
* “INFORMATION_SCHEMA.PROCESSLIST”已弃用,未来版本删除。因此,使用该表实现的“SHOW PROCESSLIST”也已弃用。推荐使用Performance_schema。
* SET_USER_ID 权限已弃用,未来版本删除。它现在已被这些新的权限替代:
- SET_ANY_DEFINER 用于创建定义者对象。
- ALLOW_NONEXISTENT_DEFINER 用于孤立对象 保护。
* “TLS_AES_128_CCM_8_SHA256”密码套件已弃用,未来版本删除。
防火墙
* MySQL Enterprise Firewall 允许其内存缓存定期重新加载防火墙中存储的数据表。以往仅在服务器启动时或服务器端插件启动时重新加载缓存。新的“mysql_firewall_reload_interval_seconds”系统变量可以设置用于重新加载表数据的日程表。
* MySQL Enterprise Firewall 以往仅能在mysql系统数据库中存储所需的表、函数和存储过程。新的 “mysql_firewall_database”服务器系统变量允许用户在服务器启动时,指定自定义的库。此外,新的脚本“uninstall_firewall.sql”简化了删除防火墙的工作。
SQL 语法
* 复制:此版本继续发布与MySQL 复制相关功能中使用的术语 。MySQL 8.2 弃用了一些SQL 语句,包括 “RESET MASTER”(使用 “RESET BINARY LOGS AND GTIDS” 代替),“SHOW MASTER STATUS”(“使用 SHOW BINARY LOG STATUS”),“SHOW MASTER LOGS”(使用 “SHOW BINARY LOGS”)和 “PURGE MASTER LOGS”(使用“BINARY LOGS”)。此外,“DISABLE ON SLAVE” 选项在“CREATE EVENT” 和 “ALTER EVENT”上已弃用。相关变更包括以下内容:
- mysqldump 添加了一个选项 “--output-as-version”定义转储中使用的术语级别对于与副本和事件相关的声明,使得创建转储成为可能与以前版本的 MySQL 兼容,仅接受现已弃用的术语。此选项的有效值为 “SERVER”、 “BEFORE_8_0_23” 和 “BEFORE_8_2_0” 。默认是 “SERVER”,这会令 “mysqldump” 获取服务器版本并输出命令与该版本兼容。
- “terminology_use_previous” 服务器系统变量添加了一个新值 “BEFORE_8_2_0”。
- SLAVESIDE_DISABLED 现已弃用。
- Com_show_master_status 系统状态变量重新命名为 “Com_show_binary_log_status”。以前的名称已弃用,但仍支持向后兼容性。
* EXPLAIN 现在支持 “FOR SCHEMA” 或 “FOR DATABASE” 选项。该选项将假设语句已经已在选项指定的数据库中运行。
添加或更改的功能
* 非兼容更改:升级绑定的 libfido2 v1.13.0 库。该libfido2版本需要 OpenSSL 1.1.1 或更高版本。
* 重要更改:适用于支持绑定 OpenSSL 的平台,用于MySQL服务器链接的OpenSSL 库已更新至版本3.0.10。
* 重要更改:添加了对 Debian 12、Fedora 39、 macOS 14 和 Ubuntu 23.10的支持。
* mysqldump:添加了 “--ignore-views” 选项以跳过 生成的转储文件中的表视图。* mysqldump:添加了 “--init-command” 和 “--init-command-add” 选项以允许连接或重新连接MySQL后执行SQL语句。
* mysql:添加了 “--init-command-add” 选项,该选项添加连接或重新连接到 MySQL 服务器后要执行的附加 SQL 语句。它类似于“--init”命令选项。
* 添加了新的 “--no-login-paths” 命令行选项,禁止处理登录路径。已添加至每个具有 “--login-path” 选项的 MySQL 客户端。
以上内容是关于MySQL 8.2.0的简单介绍,详细内容请访问官网手册。