Documentation Home
MySQL Shell 8.0 发行说明  /  MySQL Shell 8.0.3 的变化(2017-09-29,发展里程碑)

MySQL Shell 8.0.3 的变化(2017-09-29,发展里程碑)

MySQL Shell 现在将其版本号的第一位与其支持的(最高)MySQL 服务器版本同步。此更改使得决定将哪个客户端版本用于哪个服务器版本变得简单直观。MySQL Shell 现在使用与 MySQL Server 相同的版本号。

MySQL Shell 8.0.3 是第一个使用新编号的版本。它是 MySQL Shell 8.0.0 的后继版本。

弃用和移除说明

  • X DevAPI: 可用的会话类型已经简化。 XSessionNodeSession 已合并为Session. 这导致了以下变化:

    • 以下命令选项已被弃用: --node, --sqln, --classic

    • 引入了以下命令选项来替换已弃用的选项:-ma, --mysqlx ( -mx), --mysql ( -mc), --sqlx

    • \connectMySQL Shell 命令不再支持参数 ,-c-n。现在该\connect 命令支持参数 --mysqlx( -mx) 用于创建 X 协议连接,以及 --mysql( -mc) 用于创建经典 MySQL 协议连接。

  • --ssl选项已被弃用,请使用该 --ssl-mode选项。现在,如果您使用该--ssl选项,则会生成弃用警告,并且该--ssl-mode 选项将设置为DISABLEDREQUIRED基于与该 --ssl选项一起使用的值。(漏洞 #25403945)

AdminAPI 添加或更改的功能

  • 添加 WL#10611WL#10960 后,无法添加或重新加入属于集群(或复制组)的实例,因为 super_read_only=ON在停止时由组复制设置。为确保AdminAPI支持运行MySQL 8.0.2及以上版本的实例,修改了以下函数:

    • dba.configureLocalInstance()

    • dba.createCluster()

    • dba.rebootClusterFromCompleteOutage()

    • dba.dropMetadataSchema()

    现在,如果针对具有 的实例发出这些函数中的任何一个super_read_only=ON,在交互模式下,您可以选择设置 super_read_only=OFF。要强制 super_read_only=OFF在脚本中设置函数,请将clearReadOnly选项集传递给 true. 例如 dba.configureLocalInstance({clearReadOnly: true}).有关更多信息,请参阅 超级只读模式下的实例配置。(缺陷号 26422638)

修复了 AdminAPI 错误

  • 使用该clusterAdmin选项时,创建的帐户没有所有正确的权限。(漏洞#26523629)

  • multiMaster选项与 一起 使用时dba.createCluster(),未记录以交互模式显示的警告。(缺陷号 26385634)

  • 在更改集群拓扑或成员资格时,AdminAPI 没有考虑 的值 group_replication_group_name,这可能导致在诸如脑裂等场景中出现不正确的、不确定的结果。现在,以下命令验证 InnoDB 集群元数据和相应实例的 group_replication_group_name 值:

    • dba.getCluster()

    • Cluster.rejoinInstance()

    • Cluster.forceQuorumUsingPartitionOf()

    如果 的值group_replication_group_name 不匹配,则命令会因错误而中止。

    dba.rebootClusterFromCompleteOutage()还更新了以确保 group_replication_group_name 变量在重新加入实例之前未被更改。(缺陷号 26159339)

  • AdminAPI 现在始终使用当前 mysqlsh会话的活动用户值,无论该值是由用户明确指定的还是mysqlsh使用的隐式默认值的结果。(漏洞#26132527)

  • AdminAPI 在发布时执行的检查 dba.rebootClusterFromCompleteOutage()比 Group Replication 要求的检查更严格。现在,AdminAPI 认为具有等效主键(例如非空唯一键)的表是兼容的,符合组复制的当前要求。(漏洞#25974689)

  • 内部用户使用的随机生成的密码与运行密码验证插件的实例不兼容。(漏洞 #25714751)

  • 不能再使用 adoptFromGr带有选项的 multiMaster选项。将现有组采用到 InnoDB Cluster 时,采用该组是基于它是作为多主还是单主运行。multiMaster 因此,在调整组时该选项没有用处。(缺陷号 25664700)

  • 使用包含没有正确权限的用户的 URI 时发出configureLocalInstance(),会导致创建不正确的新用户。现在,如果configureLocalInstance()URI 中的用户没有足够的权限来为在交互式向导配置期间选择的新用户授予所有必要的权限,则不会创建该用户。(漏洞 #25614855)

  • 发布Cluster.rescan()导致非确定性行为,这可能会产生不正确的 JSON 输出,将已经属于集群的实例显示为属于 newlyDiscoveredInstances[]列表和 unavailableInstances[] 列表。这也导致 MySQL Shell 提示在集群中添加或删除实例。(漏洞#25534693)

  • AdminAPI 函数现在接受shell.connect. 已为 when require_secure_transportis 添加了新验证ON,现在无法使用 where 创建集群memberSslMode:DISABLED或将实例添加 require_secure_transport=ON 到集群 where memberSslMode:DISABLED。(漏洞 #25532298)

  • 帐户名称的解析,例如在将 clusterAdmin选项传递给 时dba.configureLocalInstance()已得到改进。(漏洞 #25528695)

  • AdminAPI 创建的选项文件的文件权限与 MySQL 安装创建的选项文件的文件权限不匹配。(漏洞#25526248)

  • 发出configureLocalInstance()两次可能会失败。(漏洞 #25519190)

  • rejoinInstances[]选项传递给 时 dba.rebootClusterFromCompleteOutage(),如果未 rejoinInstances[]指定任何选项,则在重建期间会错误地处理成员。现在,有资格添加到 rejoinInstances[]列表但在列表中指定的实例将被交互式向导跳过,如果未提供removeInstances[],交互式向导会尝试自动构建 列表。rejoinInstances[]此修复还确保交互式和非交互式使用 MySQL Shell 正确验证 rejoinInstances[]列表不包含无法访问的实例。(漏洞 #25516390)

  • 当集群使用的 SSL 模式与发出 addInstance()命令时指定的模式不匹配时发出的错误消息已得到改进。(缺陷号 25495056)

  • dba.deploySandboxInstance()使用MySQL Shell 中 的函数创建沙箱实例 时,在提示输入实例的 MySQL root 密码时按Ctrl+C不会取消部署。(缺陷号 25316811)

  • 在集群的最后一个成员(尤其是种子成员)上发出removeInstance() 会导致集群无法解散。现在, removeInstance()在集群的最后一个成员上发布会导致错误,您必须 dissolve()在该实例上使用以确保正确解散集群。(缺陷号 25226130)

  • now的输出cluster.status()包括ssl参数,该参数显示集群是否需要或禁用安全连接。(缺陷号 25226117)

  • {force: true} 除非您传入该选项 ,否则尝试以交互模式创建多主集群失败。现在,当您确认您了解使用多主模式的影响时,该命令正确地创建了一个多主集群。(漏洞 #25034951)

  • 无法在removeInstance()已停止的实例上工作,并且无法从集群中删除不可用的实例。该修复程序 force向 removeInstance() 命令添加了一个新选项,使您能够从元数据中删除永久不可用的实例,从而避免将过时的数据保留在集群的元数据中。此外,改进了不使用强制选项时提供的错误消息,并相应地 removeInstance()更新了联机帮助。(漏洞#24916064)

  • dba.deployLocalInstance()针对不合适或不兼容的实例 发出的错误消息 已得到改进。(漏洞 #24598272)

  • dba.createCluster()和 函数已更新为使用以下规则验证集群名称 dba.getCluster()dba.rebootClusterFromCompleteOutage()

    • 名称必须以字母或_ 字符 开头

    • 名称只能包含字母数字字符和 _字符

    • 不能超过 40 个字符

    • 不能为空

    Cluster.addInstance()函数已更新为使用以下规则验证集群中实例上使用的标签:

    • 标签只能包含字母数字或 _字符

    • 不能超过 256 个字符

    • 不能为空

    (漏洞 #24565242)

添加或更改的功能

  • MySQL Shell 现在可以正确处理用户中断,例如 SIGINT。例如,在 Linux 上,当 MySQL Shell 未执行任何操作时按 Control-C 退出应用程序。在 SQL 模式下,中断 KILL QUERY 从一个新的临时会话向活动的 MySQL Shell 会话发送一个语句,导致服务器中断查询并返回一个错误(或者在某些情况下提前返回而没有错误,比如sleep() 功能)。在 JavaScript 或 Python 脚本模式中,中断的行为方式取决于正在执行的特定函数。如果执行的是语言代码(比如while循环等普通脚本代码),活动语言会产生异常,导致代码停止执行。异常可能被脚本捕获,但如果没有,执行控制权返回给 MySQL Shell。(漏洞 #24757361)

  • MySQL Shell 现在包含一个历史功能,用于存储您发出的代码。可以保存、搜索和过滤历史记录。添加了自定义 MySQL Shell 提示符的新机制。当前模式(SQL、JavaScript 或 Python)、会话信息(主机、uri、端口等)、当前活动模式等信息可以通过变量包含在提示中。自定义信息自包含在 JSON 主题文件中,可以在用户之间共享。如果用于运行 MySQL Shell 的终端支持,MySQL Shell 现在支持 unicode。同样,如果终端支持颜色,MySQL Shell 可以配置为在主题中使用颜色。

  • 传递给 MySQL Shell 的连接选项,例如 sslMode等等,已经更改为使用短划线并且不再区分大小写。现在的选项是:

    • sslMode就是现在 ssl-mode

    • sslCa就是现在ssl-ca

    • sslCaPath就是现在 ssl-capath

    • sslCert就是现在 ssl-cert

    • sslKey就是现在ssl-key

    • sslCrl就是现在ssl-crl

    • sslCrlPath就是现在 ssl-crlpath

    • sslCiphers就是现在 ssl-ciphers

    • sslTlsVersion就是现在 tls-version

    • authMethod就是现在 auth-method

  • document_path诸如此类的操作中字段 的解释modify()已更改。现在,当document_path未设置时,操作适用于整个文档。所有操作始终保留文档的_id字段。

修正错误

  • X DevAPI: 未签名的数据可能会从数据库中错误读取。(漏洞#24912358)

  • 在 MySQL Shell 中, Schema.getCollectionAsTable()函数和select()方法不能在同一个 Python 语句中使用。(漏洞#26552804)

  • MySQL Shell 错误地返回了 DATE 和 DATETIME 值的某些元素,包括月份值和小数秒。(缺陷号 26428636)

  • 使用 MySQL Shell 在表中插入时间戳时,月份错误地递增。(漏洞#26423177)

  • 对于具有该ZEROFILL属性的列, NULL还返回了用零填充的列。(漏洞#26406214)

  • MySQL Shell\status 命令的输出增加了额外的信息。(漏洞 #26403909)

  • \connect 命令的 MySQL Shell 帮助指示可以使用连接名称而不是 URI 字符串,这是不正确的。(漏洞#26392676)

  • 如果与全局会话的连接丢失,则MySQL Shell 命令\use不会尝试重新连接。(漏洞 #25974014,漏洞 #86118)

  • 短形式-? 现在可以用作 MySQL Shell 中--help命令行选项的别名。(漏洞 #25813228)

  • MySQL Shell 命令历史显示了 MySQL Shell 启动时用于自动导入mysqlmysqlxAPI 模块的命令。(漏洞 #25739185)

  • \source MySQL Shell 命令历史显示了使用MySQL Shell 命令 运行的脚本的内容。(漏洞#25676495)

  • 如果提供了无法识别的连接选项,MySQL Shell 中的mysqlx.getNodeSession()函数现在会返回错误。(漏洞 #25552033)

  • 当用户没有有效且可访问的主目录时,MySQL Shell 不会正常退出。(缺陷号 25298480)

  • MySQL Shell 创建了一个记录器,但在退出 shell 时没有释放它。(缺陷号 25238576)

  • 当使用Ctrl+C退出 shell 时,MySQL Shell 可能会挂起。(漏洞 #25180850,漏洞 #84022)

  • 作为 URI 的一部分提供的 Unix 套接字的解析已得到改进。(漏洞 #24905066)

  • MySQL Shell 现在接受 Unicode 字符作为输入。(漏洞 #23151666,漏洞 #81176)