本节描述如何使用类似uri的连接字符串或键值对来指定如何建立到MySQL服务器的连接,对于MySQL Shell这样的客户端。有关使用命令行选项建立连接的信息,如mysql.或, mysqldump, 看第4.2.4节“使用命令选项连接到MySQL服务器”.有关无法连接的其他信息,请参见第6.2.21节“连接到MySQL的问题问题”.
这个词“类uri“表示类似于但与URI(统一资源标识符)语法类似但不相同的连接字符串语法RFC 3986.
下面的MySQL客户端支持使用类似uri的连接字符串或键值对来连接MySQL服务器:
MySQL壳
MySQL连接器实现X Devapi
本节记录了所有有效的类似uri的字符串和键值对连接参数,其中许多类似于命令行选项指定的参数:
使用URI的字符串指定的参数使用语法(如)
myuser@example.com:3306 / Main-Schema
.对于完整的语法,请参阅使用类似uri的连接字符串连接.用键-值对指定的参数使用如下语法
{user:'myuser', host:'example.com', port:3306, schema:'main-schema'}
.对于完整的语法,请参阅使用键值对连接.
连接参数不区分大小写。每个参数(如果指定)只能给出一次。如果指定了多次参数,则会发生错误。
本节涵盖以下主题:
以下讨论描述了指定与MySQL的连接时可用的参数。可以使用符合基本URI类似语法的字符串来提供这些参数(参见使用类似uri的连接字符串连接)或作为键值对(见使用键值对连接).
方案
:运输协议使用。用mysqlx.
用于X协议连接和mysql.
对于Classic MySQL协议连接。如果未指定任何协议,则服务器会尝试猜测协议。支持DNS SRV的连接器可以使用mysqlx +电脑
方案(参见使用DNS SRV记录的连接).用户
:MySQL用户帐户提供了身份验证过程。密码
:用于验证过程的密码。警告在连接规范中指定显式密码是不安全的,不建议这样做。稍后的讨论将显示如何产生输入密码的交互式提示。
宿主
:运行服务器实例的主机。该值可以是主机名,IPv4地址或IPv6地址。如果未指定主机,则默认为localhost.
.港口
:TCP / IP网络端口,目标MySQL Server正在侦听连接。如果未指定端口,则默认为33060,用于X协议连接和3306,用于Classic MySQL协议连接。插座
: Unix套接字文件的路径或Windows命名管道的名称。值是本地文件路径。在类似uri的字符串中,必须对它们进行编码,要么使用百分比编码,要么使用圆括号将路径括起来。括号消除了对字符进行百分比编码的需要,例如/
目录分隔符。例如,要连接root @ localhost.
使用Unix套接字/tmp/mysql.sock.
,指定使用百分比编码的路径root@localhost?socket=%2ftmp%2fmysql.sock.
,或使用括号作为root @ localhost?socket =(/ tmp / mysql.sock)
.架构
:连接的默认数据库。如果没有指定数据库,则连接没有默认数据库。
的处理localhost.
在UNIX上取决于传输协议的类型。使用Classic MySQL协议句柄的连接localhost.
和其他MySQL客户端一样,这意味着localhost.
假定是用于基于套接字的连接。对于使用X协议的连接,行为localhost.
不同之处在于,它被假定为代表环回地址,例如,IPv4地址127.0.0.1。
您可以通过附加指定连接的选项,作为URI样字符串中的属性?
,或作为键值对。有以下选项:属性=值
SSL模式
:连接所需的安全状态。允许以下方式:禁用
首选
必需的
验证_ca.
VERIFY_IDENTITY
有关这些模式的信息,请参见
——ssl-mode
选项描述in.加密连接的命令选项.ssl-ca
:PEM格式的X.509证书颁发机构文件的路径。ssl-capath
: PEM格式的X.509证书颁发机构文件所在路径。ssl-cert
: PEM格式的X.509证书文件的路径。ssl cipher
:通过TLSv1.2向上使用TLS协议的连接所使用的加密密码。ssl-crl
:文件的路径包含PEM格式的证书撤销列表。ssl-crlpath.
: PEM格式证书撤销列表文件所在路径。SSL-key.
: PEM格式的X.509密钥文件的路径。tls-version.
: TLS协议允许的经典MySQL协议加密连接。此选项仅MySQL Shell支持。的价值tls-version.
(奇异)是逗号分隔的列表,例如TLSv1.1,TLSv1.2
.有关详细信息,请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于SSL模式
选项未设置为禁用
.TLS版本
:用于加密X协议连接的允许TLS协议。的价值TLS版本
(多个)是一个阵列,如[tlsv1.2,tlsv1.3]
.有关详细信息,请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于SSL模式
选项未设置为禁用
.tls-ciphersuites
:允许的TLS密码套件。的价值tls-ciphersuites
是列出的IANA密码套件名单列表TLS密码套件.有关详细信息,请参见第6.3.2节,“加密连接TLS协议和密码”.此选项取决于SSL模式
选项未设置为禁用
.验证方法
:用于连接的身份验证方法。默认为汽车
,意味着服务器试图猜测。以下方法是允许的:汽车
mysql41.
SHA256_MEMORY.
FROM_CAPABILITIES
倒退
平原
对于X协议连接,任何配置
验证方法
覆盖此序列的身份验证方法:mysql41.
那SHA256_MEMORY.
那平原
.get-server-public-key
:从服务器请求RSA密钥对密码交换所需的公钥。使用SSL模式连接到Classic MySQL协议上的MySQL 8.0服务器时使用禁用
.在这种情况下,必须指定协议。例如:mysql: / / user@localhost: 3306 ?get-server-public-key = true
此选项适用于对验证的客户端
caching_sha2_password.
身份验证插件。对于该插件,除非请求,否则服务器不会发送公钥。对于未与该插件进行身份验证的帐户,忽略此选项。如果未使用基于RSA的密码交换,则也会忽略它,就像客户端使用安全连接连接到服务器时一样。如果
server-public-key-path =
给定并指定一个有效的公钥文件,它优先于文件名
get-server-public-key
.有关的信息
caching_sha2_password.
插件,看到第6.4.1.2节“缓存SHA-2可插拔认证”.服务器 - 公钥路径
:PEM格式的PATO名称包含服务器为基于RSA密钥对的密码交换所需的公钥的客户端副本。使用SSL模式连接到Classic MySQL协议上的MySQL 8.0服务器时使用禁用
.此选项适用于对验证的客户端
sha256_password
或caching_sha2_password.
身份验证插件。对于未对其中一个插件进行身份验证的帐户,将忽略此选项。如果未使用基于RSA的密码交换,则也会忽略它,就像客户端使用安全连接连接到服务器时一样。如果
server-public-key-path =
给定并指定一个有效的公钥文件,它优先于文件名
get-server-public-key
.有关的信息
sha256_password
和caching_sha2_password.
插件,看到第6.4.1.3节,“SHA-256可插拔认证”,第6.4.1.2节“缓存SHA-2可插拔认证”.连接 - 超时
:用于配置客户端(例如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 Plugin连接压缩控制的信息,请参见第20.5.5节“与X插件的连接压缩”.
请注意,不同的MySQL客户端以不同方式实现对连接压缩的支持。有关详细信息,请咨询客户的文件。10bet官方网站
压缩算法
和压缩等级
:这些选项在MySQL Shell 8.0.20和更高版本中可用,用于更多的连接压缩控制。您可以指定它们来选择用于连接的压缩算法,以及该算法使用的数字压缩级别。你也可以使用压缩算法
代替压缩
要求压缩连接。有关MySQL Shell连接压缩控件的信息,请参阅使用压缩连接.连接属性
:控制应用程序在连接时传递给服务器的键值对。有关连接属性的一般信息,请参见第27.12.9节“性能架构连接属性表”.客户端通常定义默认属性集,可以禁用或启用。例如:MySQLX://用户@主机?Connection-Attrionutes MySQLX://用户@ Host?Connection-Attributes = True MySQLX://用户@ Host?Connection-Attributes = False
默认行为是发送默认属性集。除了默认属性外,应用程序还可以指定要传递的属性。将其他连接属性指定为
连接属性
连接字符串中的参数。这连接属性
参数值必须为空(与指定相同真正的
), 一种布尔
价值 (真正的
或错误的
启用或禁用默认属性集),或一个列表或零个或多个键=值
说明符以逗号分隔(除默认属性集外)。在列表中,缺少的键值评估为空字符串。进一步的例子:mysqlx://用户@ host?connection-attributes = [attr1 = val1,attr2,attr3 =] mysqlx://用户@ host?connection-attributes = []
不能以应用程序定义的属性名开头
_
因为这样的名称是为内部属性保留的。
您可以使用类似URI字符串指定与MySQL Server的连接。这种字符串可以与MySQL shell一起使用——uri
命令选项,MySQL Shell\连接
命令,以及实现X DevAPI的MySQL连接器。
这个词“类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组件和连接选项的字典转换为连接到MySQL的有效的类似URI的连接字符串,可以在MySQL Shell或MySQL连接器中使用,实现X DevAPI。
如果在URI类似的字符串中没有指定密码,则建议使用该密码,交互式客户端提示密码。以下示例显示如何使用用户名指定类似URI的字符串用户名
.在每种情况下,都会提示输入密码。
一个X协议连接到Port 33065端口侦听的本地服务器实例。
mysqlx: / /用户名@localhost:33065
一个经典的MySQL协议连接到一个在端口3333监听的本地服务器实例。
mysql: / /用户名@localhost: 3333
使用主机名,IPv4地址和IPv6地址与远程服务器实例的x协议连接。
mysqlx: / /用户名@server.example.com/ mysqlx: / /用户名@198.51.100.14:123 mysqlx: / /用户名@ [2001: db8:85a3:8d3:1319:8a2e 370:7348):
使用套接字的X协议连接,使用百分比编码或括号提供的路径。
mysqlx: / /用户名@ /小路% 2 f至% 2 fsocket.sockmysqlx: / /用户名@(/path/to/socket.sock.)
可以指定可选路径,表示数据库。
#使用'world'作为默认数据库mysqlx://用户名@ 198.51.100.1 / world#使用'world_x'作为默认数据库,编码_为%5f mysqlx://用户名@ 198.51.100.2:33060 /世界%5FX
可以指定一个可选查询,由每个给定的值组成
成对或单个钥匙
=价值
钥匙
.要指定多个值,请分开那
人物。混合
和钥匙
=价值
钥匙
允许值。值可以是类型列表,列表值通过外观排序。字符串必须是百分之括号或由括号包围的百分比。以下是等同的。ssluser@127.0.0.1 ? ssl-ca = % 2含有% 2 fclientcert % 2 fca-cert.pem \ &ssl-cert = % 2果脆fclient-cert % 2 fclientcert % 2。ssl-ca=(/root/clientcert/ca-cert.pem)\ &ssl-cert=(/root/clientcert/client-cert.pem)\ &ssl-key=(/root/clientcert/client-key)
指定用于加密连接的TLS版本和CIPHersUite:
mysql: / /用户名@ 198.51.100.2:3306 / world%5fx?\ tls-assions = [tlsv1.2,tlsv1.3]&tls-ciphersuites = [tls_dhe_psk_with_aes_128_ \ gcm_sha256,tls_chacha20_poly1305_sha256]
前面的示例假设连接需要密码。对于交互式客户机,在登录提示时请求指定用户的密码。如果没有密码的用户帐户(不安全,不推荐),或者如果插座peer-credential身份验证是使用(例如,使用Unix套接字连接),您必须显式地指定在连接字符串中没有提供密码和密码提示不是必需的。为了做到这一点,放置a:
之后用户名
在字符串后不要指定密码。例如:
mysqlx: / /用户名: @localhost
在MySQL Shell和一些实现X DevAPI的MySQL连接器中,您可以使用键-值对指定到MySQL服务器的连接,键-值对以语言自然结构提供,用于实现。例如,您可以使用键值对作为JavaScript中的JSON对象或Python中的字典来提供连接参数。不管键值对是如何提供的,其概念都是相同的:可以为本节中描述的键分配用于指定连接的值。你可以在MySQL Shell中使用键值对来指定连接shell.connect()
方法或InnoDB集群的dba.createCluster()
方法,以及一些MySQL连接器实现X Devapi。
通常,钥匙值对被包围{
和}
字符和那
字符用作键值对之间的分隔符。这:
字符用于键和值之间,字符串必须分隔(例如,使用'
特点)。与类似URI的连接字符串不同,不需要对编码字符串百分比。
指定为键值对的连接具有以下格式:
{钥匙:价值那钥匙:价值,...}
可以用作连接键的参数描述在基础连接参数.
如果键值对中不指定密码(推荐使用),交互客户端会提示输入密码。下面的示例演示如何使用带有用户名的键值对来指定连接'
.在每种情况下,都会提示输入密码。用户名
'
一个X协议连接到Port 33065端口侦听的本地服务器实例。
{用户:'用户名',主机:'localhost',端口:33065}
一个经典的MySQL协议连接到一个在端口3333监听的本地服务器实例。
{用户:'用户名',主机:'localhost',端口:3333}
使用主机名,IPv4地址和IPv6地址与远程服务器实例的x协议连接。
{用户:'用户名',主机:'server.example.com'} {用户:'用户名”,主持人:198.51.100.14:123}{用户:“用户名',主持人:[2001:DB8:85A3:8D3:1319:8A2E:370:7348]}}
使用套接字的X协议连接。
{用户:'用户名', 插座:'/ /套接字文件路径'}
可以指定可选模式,表示数据库。
{用户:'用户名”,主持人:“localhost”模式:“世界”}
前面的示例假设连接需要密码。对于交互式客户机,在登录提示时请求指定用户的密码。如果用户帐户没有密码(这是不安全的,不推荐使用),或者使用套接字对等凭据身份验证(例如,使用Unix套接字连接),则必须显式指定不提供密码,并且不需要密码提示。为此,使用''
之后密码
钥匙。例如:
{用户:'用户名,密码:”,主持人:' localhost '}