MySQL Shell API8.0.31
MySQL产品的统一开发接口 |
在MySQL Shell上公开的API上,有几个函数需要提供一些连接数据。
连接数据可以用以下格式指定:
一个基本URI字符串有以下格式:
[方案:/ /][用户(密码):@]<主机(港口):|套接字>[/模式][?选项=价值选择=值…]
连接选项
以下选项在URI或字典中使用都是有效的:
当在URI中定义这些选项时,它们的值必须是URL编码的。
当使用字典时,以下选项也有效:
基础连接选项
SSH隧道连接选项
连接选项不区分大小写,只能定义一次。
如果一个选项被定义了不止一次,就会产生一个错误。
连接数据中指定的选项决定要使用的连接类型。
scheme选项定义了在连接上使用的协议,以下是可接受的值:
如果在连接数据中没有指定协议,shell将首先尝试使用X协议进行连接,如果连接失败,它将尝试使用MySQL协议进行连接。
通常,Shell使用TCP连接连接到服务器,除非连接数据包含创建下面描述的任何连接所需的选项。
unix域套接字连接
要使用unix域套接字连接到本地MySQL服务器,必须将主机设置为'localhost',不应提供端口号,并提供套接字路径。
在使用MySQL协议时,可能不提供套接字路径,在这种情况下,将使用套接字文件的默认路径。
在使用连接字典时,将套接字路径设置为套接字选项的值。
当使用URI时,套接字路径必须是URL编码如下:
可以通过将套接字路径括在圆括号中来跳过URL编码:
Windows命名管道连接
要使用命名管道连接到MySQL服务器,主机必须设置为'。,不应提供端口号。
如果没有提供管道名,则使用默认的管道名:MySQL。
使用连接字典时,将命名管道名称设置为套接字选项的值。
在使用URI时,如果命名管道的URL包含无效字符,则必须采用URL编码。URL编码可以通过将管道名括在圆括号中跳过:
命名管道连接只支持MySQL协议。
Windows共享内存连接
只有当服务器使用默认的共享内存基名称MySQL启用了共享内存连接时,才允许共享内存连接。
要使用共享内存连接到本地MySQL服务器,主机应该设置为'localhost',不应该提供端口。
如果服务器没有使用默认基名启用共享内存连接,则连接将使用TCP完成。
共享内存连接只支持MySQL协议。
SSL模式
ssl-mode选项接受以下值:
TLS版本
tls-version选项接受以下格式的值:TLSv<版本>,例如TLSv1.2, TLSv1.3。
身份验证方法
在经典会话的情况下,这是要使用的身份验证插件的名称,即caching_sha2_password。对于X协议会话,它应该是:
连接压缩
连接压缩由以下连接选项控制:“压缩”、“压缩算法”和“压缩级”。
"compression"接受以下值:
为了方便起见,“压缩”也接受布尔值:'True', 'False', '1'和'0'分别映射到REQUIRED和DISABLED。
“压缩-算法”要求算法列表以逗号分隔。支持的算法包括:
如果没有定义“compression”连接选项,它的值将从提供时的“compression-algorithms”值推导出来。
“压缩级”需要一个整数值。有效范围取决于压缩算法和服务器配置,但通常预期如下:
连接属性
连接属性是在连接时发送到服务器的键-值对。它们存储在以下PERFORMANCE_SCHEMA表中:
这些属性应该在创建会话时定义,并且在会话的生命周期内不可变。
要在URI上定义连接属性,连接属性应该定义为URI的一部分,如下所示:
root@localhost:端口/模式?连接属性= [att1 = value1, att2 = val2…]
注意,用于属性名和值的字符必须遵循URI标准,也就是说,如果字符不允许,则必须按百分比编码。
为了在使用字典创建会话时定义连接属性,应该定义连接属性选项,它的值可以用以下格式设置:
注意,连接属性值应该是字符串,如果在字典中使用了其他数据类型,则使用的数据的字符串表示将存储在数据库中。
URL编码
URL编码的值只接受字母数字字符和下面的符号:-._~!$'()*+;
任何其他字符必须是URL编码的。
URL编码是通过将被编码的字符替换为序列:%XX来完成的
其中XX是被编码字符的十六进制ASCII值。
如果host是一个字面IPv6地址,它应该用“[”和“]”字符括起来。
如果host是带区域ID的IPv6地址,则需要对地址和区域ID之间的'%'字符进行URL编码。