MySQL Shell 现在将其版本号的第一位与其支持的(最高)MySQL 服务器版本同步。此更改使得决定将哪个客户端版本用于哪个服务器版本变得简单直观。MySQL Shell 现在使用与 MySQL Server 相同的版本号。
MySQL Shell 8.0.3 是第一个使用新编号的版本。它是 MySQL Shell 8.0.0 的后继版本。
-
X DevAPI: 可用的会话类型已经简化。
XSession
并NodeSession
已合并为Session
. 这导致了以下变化: 该
--ssl
选项已被弃用,请使用该--ssl-mode
选项。现在,如果您使用该--ssl
选项,则会生成弃用警告,并且该--ssl-mode
选项将设置为DISABLED
或REQUIRED
基于与该--ssl
选项一起使用的值。(漏洞 #25403945)
-
添加 WL#10611 和WL#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)
使用该
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
. 已为 whenrequire_secure_transport
is 添加了新验证ON
,现在无法使用 where 创建集群memberSslMode:DISABLED
或将实例添加require_secure_transport=ON
到集群 wherememberSslMode: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 启动时用于自动导入
mysql
和mysqlx
API 模块的命令。(漏洞 #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)