本节描述使用类似uri的连接字符串或键值对来指定如何为MySQL Shell等客户端建立到MySQL服务器的连接。有关使用命令行选项建立连接的信息,对于诸如mysql或, mysqldump,请参阅第4.2.4节“使用命令选项连接MySQL服务器”.有关无法连接的其他信息,请参见章节6.2.21,“连接MySQL的问题排除”.
这个词”类uri”表示连接字符串语法,类似于定义的URI(统一资源标识符)语法,但不完全相同RFC 3986.
以下MySQL客户端支持使用类似uri的连接字符串或键值对连接到MySQL服务器:
MySQL壳
实现X DevAPI的MySQL连接器
本节记录了所有有效的类似uri的字符串和键值对连接参数,其中许多类似于命令行选项中指定的参数:
使用类似uri的字符串指定的参数使用的语法为
myuser@example.com: 3306 /主模式
.有关完整的语法,请参见使用类似uri的连接字符串连接.使用键-值对指定的参数使用的语法为
{用户:'myuser',主机:'example.com',端口:3306,模式:'main-schema'}
.有关完整的语法,请参见使用键值对连接.
连接参数不区分大小写。如果指定了每个参数,则只能给出一次。如果一个参数指定了多次,就会发生错误。
本节涵盖以下主题:
下面的讨论描述了在指定到MySQL的连接时可用的参数。这些参数可以使用符合基本uri样语法的字符串来提供(参见使用类似uri的连接字符串连接),或作为键-值对(参见使用键值对连接).
计划
:要使用的传输协议。使用mysqlx
用于X协议连接和mysql
用于经典的MySQL协议连接。如果没有指定协议,服务器将尝试猜测协议。支持DNS SRV的连接器可以使用mysqlx +电脑
方案(见使用DNS SRV记录的连接).用户
:用于鉴权过程的MySQL用户。密码
:鉴权过程中使用的密码。警告在连接规范中指定显式密码是不安全的,不建议使用。后面的讨论将展示如何引起密码的交互式提示。
宿主
:服务器实例所在的主机。取值为主机名、IPv4地址或IPv6地址。如果没有指定主机,默认为本地主机
.港口
:目标MySQL服务器监听连接的TCP/IP网口。如果没有指定端口,X协议连接的默认端口是33060,经典MySQL协议连接的默认端口是3306。套接字
: Unix套接字文件的路径或Windows命名管道的名称。取值为本地文件路径。在类似uri的字符串中,必须对它们进行编码,使用百分比编码或将路径用圆括号括起来。括号消除了对字符进行百分比编码的需要,例如/
目录分隔符。例如,to connect asroot@localhost
使用Unix套接字/ tmp / mysql.sock
,指定路径使用百分比编码为root@localhost ?插座= % 2 ftmp % 2 fmysql.sock
,或使用括号作为root@localhost ?插座= (/ tmp / mysql.sock)
.模式
:连接的默认数据库。如果没有指定数据库,则连接没有默认数据库。
处理本地主机
取决于传输协议的类型。连接使用经典的MySQL协议句柄本地主机
和其他MySQL客户端一样,这意味着本地主机
假定是用于基于套接字的连接。对于使用X协议的连接,的行为本地主机
不同之处在于它被假定为代表环回地址,例如IPv4地址127.0.0.1。
您可以为连接指定选项,或者作为类似uri的字符串中的属性?
,或作为键-值对。有以下选项:属性=值
ssl-mode
:连接所需的安全状态。允许使用以下模式:禁用
首选
要求
VERIFY_CA
VERIFY_IDENTITY
有关这些模式的信息,请参见
——ssl-mode
选项说明加密连接的命令选项.ssl-ca
: PEM格式的X.509证书颁发机构文件路径。ssl-capath
: PEM格式的X.509证书颁发机构文件所在目录的路径。ssl-cert
: X.509证书文件的PEM格式路径。ssl cipher
:用于使用TLS协议到TLSv1.2的连接的加密密码。ssl-crl
: PEM格式的证书吊销文件的路径。ssl-crlpath
: PEM格式的证书吊销列表文件所在目录的路径。ssl密钥
: X.509密钥文件的PEM格式路径。tls版本
:经典MySQL协议加密连接所允许的TLS协议。该选项仅MySQL Shell支持。的价值tls版本
(单数)是一个逗号分隔的列表,例如TLSv1.1, TLSv1.2
.详细信息请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于ssl-mode
选项未设置为禁用
.tls-versions
:“X协议”加密连接时允许使用的TLS协议。的价值tls-versions
(复数)是一个数组,如[TLSv1.2, TLSv1.3]
.详细信息请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于ssl-mode
选项未设置为禁用
.tls-ciphersuites
:允许使用的TLS加密套件。的价值tls-ciphersuites
是IANA密码套件名称的列表,如在TLS密码套件.详细信息请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于ssl-mode
选项未设置为禁用
.auth方法
:连接使用的身份验证方法。默认为汽车
,意味着服务器尝试猜测。允许使用以下方法:汽车
MYSQL41
SHA256_MEMORY
FROM_CAPABILITIES
回退
平原
对于X协议连接,任何配置
auth方法
重写为下面的身份验证方法序列:MYSQL41
,SHA256_MEMORY
,平原
.get-server-public-key
:向服务器请求RSA密钥对密码交换所需的公钥。当使用SSL模式通过经典MySQL协议连接到MySQL 8.0服务器时使用禁用
.在这种情况下,您必须指定协议。例如:mysql: / / user@localhost: 3306 ?get-server-public-key = true
属性进行身份验证的客户机应用此选项
caching_sha2_password
身份验证插件。对于该插件,服务器不发送公钥,除非请求。对于没有使用该插件进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时一样。如果
server-public-key-path =
并指定有效的公钥文件,它优先于file_name
get-server-public-key
.有关
caching_sha2_password
插件,看到章节6.4.1.2,“缓存SHA-2可插拔身份验证”.server-public-key-path
: PEM格式文件的路径名,该文件包含服务器端通过RSA密钥对进行密码交换所需的公钥的客户端副本。当使用SSL模式通过经典MySQL协议连接到MySQL 8.0服务器时使用禁用
.属性进行身份验证的客户机应用此选项
sha256_password
或caching_sha2_password
身份验证插件。对于没有使用这些插件之一进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户端使用安全连接连接到服务器时一样。如果
server-public-key-path =
并指定有效的公钥文件,它优先于file_name
get-server-public-key
.有关
sha256_password
而且caching_sha2_password
插件,看到章节6.4.1.3,“SHA-256可插拔认证”,章节6.4.1.2,“缓存SHA-2可插拔身份验证”.connect-timeout
:一个整数值,用于配置客户端(如MySQL Shell)在停止连接无响应的MySQL服务器时等待的秒数。压缩
:该选项请求或禁用连接压缩。到MySQL 8.0.19,它只适用于经典的MySQL协议连接,从MySQL 8.0.20开始,它也适用于X协议连接。在MySQL 8.0.19之前,此选项的值为
真正的
(或1),即启用压缩,以及默认值假
(或0)将禁用压缩。从MySQL 8.0.20开始,这个选项的值是
要求
,它请求压缩,如果服务器不支持则会失败;首选
,它请求压缩并回落到未压缩的连接;而且禁用
,它请求一个未压缩的连接,如果服务器不允许,则会失败。首选
是X协议连接的默认值,和禁用
是经典MySQL协议连接的默认值。有关X插件连接压缩控制的信息,请参见第20.5.5节,“使用X插件进行连接压缩”.
注意,不同的MySQL客户端对连接压缩的支持是不同的。详细信息请查阅客户的文档。10bet官方网站
压缩算法
而且压缩等级
:这些选项在MySQL Shell 8.0.20及更高版本中可用,用于对连接压缩进行更多控制。您可以指定它们以选择连接使用的压缩算法,以及该算法使用的数值压缩级别。你也可以使用压缩算法
代替压缩
请求对连接进行压缩。有关MySQL Shell的连接压缩控制的信息,请参见使用压缩连接.连接属性
:控制应用程序在连接时传递给服务器的键值对。有关连接属性的一般信息,请参见第27.12.9节,“性能模式连接属性表”.客户端通常定义一组默认属性,这些属性可以被禁用或启用。例如:mysqlx: / / user@host ?连接属性mysqlx: / / user@host ?连接属性=真正的mysqlx: / / user@host ?连接属性= false
默认行为是发送默认属性集。除了默认属性外,应用程序还可以指定要传递的属性。指定附加的连接属性为
连接属性
连接字符串中的参数。的连接属性
参数值必须为空(与指定真正的
),一个布尔
值(真正的
或假
启用或禁用默认属性集),或一个列表或零个或多个键=值
以逗号分隔的说明符(除默认属性集外发送)。在列表中,缺少键值的计算结果为空字符串。进一步的例子:mysqlx: / / user@host ?连接属性= [attr1 = val1, attr2 attr3 =] mysqlx: / / user@host吗?连接属性= []
应用程序定义的属性名不能以
_
因为这些名称是为内部属性保留的。
您可以使用类似uri的字符串指定到MySQL服务器的连接。这样的字符串可以与MySQL Shell一起使用——uri
命令选项,MySQL Shell\连接
命令,和MySQL连接器实现X DevAPI。
这个词”类uri”表示连接字符串语法,类似于定义的URI(统一资源标识符)语法,但不完全相同RFC 3986.
类似uri的连接字符串有以下语法:
[计划: / /] [用户[: [密码]] @]宿主[:港口] [/模式] [?attribute1 = value1&attribute2 = value2……
百分比编码必须用于类似uri的字符串元素中的保留字符。属性指定的字符串@
字符时,该字符必须由% 40
.如果在IPv6地址中包含区域ID,则不能使用%
用作分隔符的字符必须替换为% 25
.
可以在类似uri的连接字符串中使用的参数描述在底座连接参数.
MySQL壳牌的shell.parseUri ()
而且shell.unparseUri ()
方法可以用来解构和组装一个类似uri的连接字符串。给定一个类似uri的连接字符串,shell.parseUri ()
返回包含字符串中找到的每个元素的字典。shell.unparseUri ()
将一个URI组件和连接选项的字典转换为一个有效的类似URI的连接字符串,用于连接到MySQL,可以在MySQL Shell中使用,也可以通过实现X DevAPI的MySQL连接器使用。
如果建议在类似uri的字符串中没有指定密码,交互式客户端将提示输入密码。下面的示例演示如何使用用户名指定类似uri的字符串user_name
.在每种情况下,都会提示输入密码。
一个X协议连接到一个本地服务器实例,监听端口33065。
mysqlx: / /user_name@localhost: 33065
一个经典的MySQL协议连接到一个本地服务器实例,在端口3333监听。
mysql: / /user_name@localhost: 3333
一个X协议连接到远程服务器实例,使用一个主机名、一个IPv4地址和一个IPv6地址。
mysqlx: / /user_name@server.example.com/ mysqlx: / /user_name@198.51.100.14:123 mysqlx: / /user_name@ [2001: db8:85a3:8d3:1319:8a2e 370:7348):
使用套接字的X协议连接,路径使用百分比编码或圆括号提供。
mysqlx: / /user_name@ /路径% 2 f来% 2 fsocket.sockmysqlx: / /user_name@ (/ / socket.sock /路径)
可以指定一个可选的路径,它表示一个数据库。
使用'world'作为默认数据库mysqlx://user_name@198.51.100.1/world #使用'world_x'作为默认数据库,编码_为%5F mysqlx://user_name@198.51.100.2:33060 /世界% 5外汇
可以指定一个可选查询,由每个值组成
成对或单独关键
=价值
关键
.如果要指定多个值,请用,
字符。混合的
而且关键
=价值
关键
价值观是允许的。值可以是list类型,列表值按外观排序。字符串必须用百分比编码或用圆括号括起来。以下是等价的。ssluser@127.0.0.1 ? ssl-ca = % 2含有% 2 fclientcert % 2 fca-cert.pem \ &ssl-cert = % 2果脆fclient-cert % 2 fclientcert % 2。\ &ssl-key=(/root/clientcert/ ca-cert.pem)\ &ssl-key=(/root/clientcert/ client-cert.pem)\ &ssl-key=(/root/clientcert/ client-cert.pem)\ &ssl-key=(/root/clientcert/client-key)
要指定用于加密连接的TLS版本和密码套件:
mysql: / /user_name@198.51.100.2:3306 /世界% 5外汇吗?\ tls-versions=[TLSv1.2,TLSv1.3]&tls-ciphersuites=[TLS_DHE_PSK_WITH_AES_128_\ GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256]
前面的例子假设连接需要密码。对于交互式客户端,在登录提示符时要求指定用户的密码。如果用户帐户没有密码(这是不安全的,不建议使用),或者使用套接字peer-credential身份验证(例如,Unix套接字连接),则必须在连接字符串中显式指定不提供密码,并且不需要密码提示。要做到这一点,放置a:
后user_name
在字符串中,但不要在其后指定密码。例如:
mysqlx: / /user_name: @localhost
在MySQL Shell和一些实现X DevAPI的MySQL连接器中,您可以使用键值对指定到MySQL服务器的连接,这些键值对以语言自然构造的形式提供。例如,您可以在JavaScript中用键值对作为JSON对象提供连接参数,或者在Python中用字典提供连接参数。不管键-值对是如何提供的,概念都是一样的:可以为本节中描述的键分配用于指定连接的值。你可以在MySQL Shell中使用键值对来指定连接shell.connect ()
方法或InnoDB集群的dba.createCluster ()
方法,以及一些实现X DevAPI的MySQL连接器。
通常,键-值对由{
而且}
字符和,
字符用作键值对之间的分隔符。的:
字符用于键和值之间,字符串必须分隔开(例如,使用'
字符)。与类似uri的连接字符串不同,不需要对字符串进行百分比编码。
指定为键值对的连接有以下格式:
{关键:价值,关键:价值,……}
可以用作连接键的参数描述在底座连接参数.
如果没有在键值对中指定密码(推荐使用),交互式客户端将提示输入密码。下面的示例演示如何使用带有用户名的键-值对指定连接'
.在每种情况下,都会提示输入密码。user_name
'
一个X协议连接到一个本地服务器实例,监听端口33065。
{用户:“user_name,主机:'localhost',端口:33065}
一个经典的MySQL协议连接到一个本地服务器实例,在端口3333监听。
{用户:“user_name',主机:'localhost',端口:3333}
一个X协议连接到远程服务器实例,使用一个主机名、一个IPv4地址和一个IPv6地址。
{用户:“user_name', host:'server.example.com'} {user:'user_name', host:198.51.100.14:123} {user:'user_name”,主持人:[2001:db8:85a3:8d3:1319:8a2e: 370:7348]}
使用套接字的X协议连接。
{用户:“user_name的套接字:/ /套接字文件路径'}
可以指定一个可选的模式,它表示一个数据库。
{用户:“user_name, host:'localhost', schema:'world'}
前面的例子假设连接需要密码。对于交互式客户端,在登录提示符时要求指定用户的密码。如果用户帐户没有密码(这是不安全的,不建议使用),或者使用套接字peer-credential身份验证(例如,Unix套接字连接),则必须显式指定不提供密码,并且不需要密码提示。为此,提供一个空字符串using''
后密码
关键。例如:
{用户:“user_name',密码:",主机:'localhost'}