10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.1 kb
手册页(Zip)- 372.2 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/.../ 使用类似uri的字符串或键值对连接到服务器

4.2.5使用类uri字符串或键值对连接服务器

本节描述使用类似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方法重写为下面的身份验证方法序列:MYSQL41SHA256_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_passwordcaching_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的连接字符串连接

您可以使用类似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套接字连接),则必须在连接字符串中显式指定不提供密码,并且不需要密码提示。要做到这一点,放置auser_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'}