本章描述了全套 MySQL Connector/NET 8.0 连接选项。您用来连接服务器的协议(经典 MySQL 协议或 X 协议)决定了您应该使用哪些选项。连接选项有一个默认值,您可以通过在连接字符串(经典 MySQL 协议和 X 协议)或类似 URI 的连接字符串(X 协议)中定义新值来覆盖该默认值。连接器/NET 选项名称和同义词不区分大小写。
有关如何使用连接字符串的说明,请参阅 第 4.4.1 节 “创建连接器/NET 连接字符串”。有关其他连接方式,请参阅 使用类似 URI 的字符串或键值对连接到服务器。
以下部分列出了适用于两种协议的连接选项,仅适用于经典 MySQL 协议和仅适用于 X 协议:
以下连接器/NET 连接选项可与任一协议一起使用。Connector/NET 8.0 将此部分中的选项公开为
MySql.Data.MySqlClient.MySqlConnectionStringBuilder
和
MySqlX.XDevAPI.MySqlXConnectionStringBuilder
类中的属性。
-
CertificateFile
,Certificate File
默认:
null
此选项指定 PKCS #12 格式 ( ) 证书文件的路径
.pfx
。有关使用示例,请参阅 第 4.6.7.2 节,“在连接器/NET 中使用 PFX 证书”。-
CertificatePassword
,Certificate Password
默认:
null
指定与使用选项指定的证书一起使用的密码
CertificateFile
。有关使用示例,请参阅第 4.6.7.2 节,“在连接器/NET 中使用 PFX 证书”。-
CertificateStoreLocation
,Certificate Store Location
默认:
null
使您能够访问个人存储中保存的证书,而不是使用证书文件和密码组合。有关使用示例,请参阅 第 4.6.7.2 节,“在连接器/NET 中使用 PFX 证书”。
-
CertificateThumbprint
,Certificate Thumbprint
默认:
null
指定证书指纹以确保正确识别个人存储中包含的证书。有关使用示例,请参阅 第 4.6.7.2 节,“在连接器/NET 中使用 PFX 证书”。
-
CharacterSet
, ,Character Set
CharSet
指定应用于对发送到服务器的所有查询进行编码的字符集。结果仍然以结果数据的字符集返回。
-
ConnectionProtocol
, ,Protocol
Connection Protocol
默认值:(
socket
或tcp
)指定与服务器建立的连接类型。值可以是:
socket
或tcp
使用 TCP/IP 的套接字连接。pipe
对于命名管道连接(X 协议不支持)。unix
用于 UNIX 套接字连接。memory
使用 MySQL 共享内存(X 协议不支持)。
-
Database
,Initial Catalog
默认:
mysql
最初使用的数据库的区分大小写的名称。
-
dns-srv
,dnssrv
默认:
false
启用连接以解析 DNS SRV 记录中的服务 (SRV) 地址,当它与默认传输协议 ( ) 一起使用时,它定义指定服务的服务器位置(主机名和端口号
tcp
)。单个 DNS 域可以使用 SRV 地址记录映射到多个目标(服务器)。每个 SRV 记录包括主机名、端口、优先级和权重。Connector/NET 8.0.19 中引入了 DNS SRV 支持,以消除客户端识别连接字符串中每个可能的主机的需要,无论是否使用连接池。ConnectionProtocol
启用 DNS SRV 时,不允许在连接字符串中 指定多个主机名、端口号或 Unix 套接字、命名管道或共享内存连接(请参阅 选项)。使用经典的 MySQL 协议。 该
dns-srv
选项适用于连接字符串;该DnsSrv
属性在MySqlConnectionStringBuilder
类中声明。// Connection string example var conn = new MySqlConnection("server=_mysql._tcp.example.abc.com.; dns-srv=true; user id=user; password=****; database=test"); // MySqlConnectionStringBuilder class example var sb = new MySqlConnectionStringBuilder(); { Server = "_mysql._tcp.example.abc.com.", UserID = "user", Password = "****", DnsSrv = true, Database = "test" }; var conn = new MySqlConnection(sb.ConnectionString);
使用 X 协议。 该
dns-srv
选项适用于连接字符串和匿名对象。该DnsSrv
属性在MySqlXConnectionStringBuilder
类中声明。如果将两者dns-srv=false
和 URI 方案mysqlx+srv://
结合起来创建冲突的连接配置,则会引发错误。有关mysqlx+srv://
在类似 URI 的连接字符串中使用方案元素的详细信息,请参阅 使用 DNS SRV 记录的连接。// Connection string example var session = MySQLX.GetSession("server=_mysqlx._tcp.example.abc.com.; dns-srv=true; user id=user; password=****; database=test"); // Anonymous object example var connstring = new { server = "_mysqlx._tcp.example.abc.com.", user = "user", password = "****", dnssrv = true }; var session = MySQLX.GetSession(connString); // MySqlXConnectionStringBuilder class example var sb = new MySqlXConnectionStringBuilder(); { Server = "_mysqlx._tcp.example.abc.com.", UserID = "user", Password = "****", DnsSrv = true, Database = "test" }; var session = MySQLX.GetSession(sb.ConnectionString);
-
Keepalive
,Keep Alive
默认:
0
对于 TCP 连接,在发送第一个 keepalive 数据包之前以秒为单位测量的空闲连接时间。值为 0 表示
keepalive
未使用。在 Connector/NET 6.6.7/6.7.5/6.8.4 之前,此值以毫秒为单位。-
Password
, , ,Password1
pwd
pwd1
默认值:一个空字符串
用于单因素/单因素身份验证(1FA/SFA)的 MySQL 帐户的密码,它仅使用一种身份验证方法,例如密码。
从 Connector/NET 8.0.28 开始,此选项还为具有多个身份验证因素的帐户提供第一个秘密密码。服务器可能需要一个 (1FA)、两个 (2FA) 或三个 (3FA) 密码来验证 MySQL 帐户。例如,如果创建一个具有 2FA 的帐户,如下所示:
CREATE USER 'abe'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'sha2_password' AND IDENTIFIED WITH authentication_ldap_sasl AS 'uid=u1_ldap,ou=People,dc=example,dc=com';
然后您的应用程序可以指定一个带有此选项(
password
或其同义词)的连接字符串和一个值,sha2_password
在这种情况下,以满足第一个身份验证因素。var connString = "server=localhost; user=abe; password=sha2_password; password2=ldap_password; port=3306";
或者,对于使用
MySqlConnectionStringBuilder
对象建立的连接:MySqlConnectionStringBuilder settings = new MySqlConnectionStringBuilder() { Server = "localhost", UserID = "abe", Pwd1 = "sha2_password", Pwd2 = "ldap_password", Port = 3306 };
如果服务器不要求将密码与身份验证方法一起使用,则忽略为 、 或 选项
password
指定password2
的 值。password3
-
Password2
,pwd2
默认值:一个空字符串
具有多个身份验证因素的帐户的第二个秘密密码(请参阅
Password
连接选项)。-
Password3
,pwd3
默认值:一个空字符串
具有多个身份验证因素的帐户的第三个秘密密码(请参阅
Password
连接选项)。-
Port
默认:
3306
MySQL 用于侦听连接的端口。如果使用 Unix 套接字,则忽略此值。
-
Server
, , ,Host
Data Source
DataSource
默认:
localhost
一台或多台主机的名称或网络地址。多个主机用逗号分隔,优先级(0 到 100)(如果提供)确定主机选择顺序。从 Connector/NET 8.0.19 开始,当优先级被省略或每个主机都相同时,主机选择是随机的。
// Selects the host with the highest priority (100) first server=(address=192.10.1.52:3305,priority=60),(address=localhost:3306,priority=100);
提供程序不会尝试同步写入数据库,因此在使用此选项时要小心。在具有 Mono 的 UNIX 环境中,这可以是 MySQL 套接字文件的完全限定路径。通过此配置,将使用 UNIX 套接字而不是 TCP/IP 套接字。目前,只能给出一个套接字名称,因此目前不支持使用 UNIX 套接字在复制环境中访问 MySQL。
-
SslCa
,Ssl-Ca
默认:
null
根据所使用的证书类型,此选项指定 PKCS #12 格式 (
.pfx
) 证书文件的路径或 PEM 格式 (.pem
) 包含可信 SSL 证书颁发机构 (CA) 列表的文件路径。使用 PFX 证书时,此选项在
SslMode
连接选项设置为 、 或 的值Required
时VerifyCA
启用VerifyFull
;否则,它会被忽略。使用 PEM 证书时,此选项在
SslMode
连接选项设置为VerifyCA
或 的值时启用VerifyFull
;否则,它会被忽略。有关使用示例,请参阅 第 4.6.7.1 节,“在连接器/NET 中使用 PEM 证书”。
-
SslCert
,Ssl-Cert
默认:
null
用于建立加密连接的 PEM 格式的 SSL 证书文件的名称。仅当
VerifyFull
为SslMode
连接选项设置并且SslCa
连接选项使用 PEM 证书时,此选项才会起作用;否则,它会被忽略。有关使用示例,请参阅 第 4.6.7.1 节,“在连接器/NET 中使用 PEM 证书”。-
SslKey
,Ssl-Key
默认:
null
用于建立加密连接的 PEM 格式的 SSL 密钥文件的名称。仅当
VerifyFull
为SslMode
连接选项设置并且SslCa
连接选项使用 PEM 证书时,此选项才会起作用;否则,它会被忽略。有关使用示例,请参阅 第 4.6.7.1 节,“在连接器/NET 中使用 PEM 证书”。-
SslMode
, ,Ssl Mode
Ssl-Mode
默认值:取决于 Connector/NET 的版本和使用的协议。X 协议不支持命名管道和共享内存连接。
Required
对于 8.0.8 到 8.0.12(两种协议);8.0.13 及更高版本(仅限 X 协议)。Preferred
对于 8.0.13 及更高版本(仅限经典 MySQL 协议)。
此选项具有以下值:
Disabled
– 不要使用 SSL。未启用 SSL 的服务器要求将此选项Disabled
明确设置为 Connector/NET 8.0.29 或更高版本。None
– 不要使用 SSL。未启用 SSL 的服务器要求将此选项None
明确设置为 Connector/NET 8.0.8 或更高版本。笔记从 Connector/NET 8.0.29 开始不推荐使用此值。改用
Disabled
。Preferred
– 如果服务器支持,则使用 SSL,但在所有情况下都允许连接。此选项已在 Connector/NET 8.0.8 中删除,并在 8.0.13 中重新实现,仅适用于经典 MySQL 协议。笔记不要将此选项用于 X 协议操作。
Required
– 始终使用 SSL。如果服务器不支持 SSL,则拒绝连接。VerifyCA
– 始终使用 SSL。验证证书颁发机构 (CA),但容忍名称不匹配。VerifyFull
– 始终使用 SSL。如果主机名不正确,则失败。
-
tlsversion
, ,tls-version
tls version
默认值:回退解决方案决定使用哪个版本的 TLS。
SslMode
当客户端和服务器都支持指示的 TLS 版本并且连接字符串选项的值未设置为Disabled
或None
(在 Connector/NET 8.0.29 中已弃用) 时,限制在 TLS 握手期间使用的 TLS 协议版本 集。此选项接受单个版本或以逗号分隔的版本列表,例如,tls-version=TLSv1.2, TLSv1.3;
。连接器/NET 支持以下值:
TLSv1.3
TLSv1.2
当分配的值不是列出的值时,会报告错误。同样,当提供空列表作为值时,或者如果列表中的所有版本均不受支持且未尝试连接,则会报告错误。
-
UserID
,,,,, _ _ _ _User Id
Username
Uid
User name
User
默认:
null
正在使用的 MySQL 登录帐户。
与使用连接池的系统相关的选项一起出现在常规选项列表的末尾(请参阅
连接池选项)。Connector/NET 8.0 将此部分中的选项公开为
MySql.Data.MySqlClient.MySqlConnectionStringBuilder
类中的属性。
常规选项。 后面的 Connector/NET 选项一般用于连接字符串,这些选项适用于所有 MySQL 服务器配置:
-
AllowBatch
,Allow Batch
默认:
true
当 时
true
,一条命令执行可以发送多个 SQL 语句。批处理语句应由服务器定义的分隔符分隔。-
AllowLoadLocalInfile
,Allow Load Local Infile
默认:
false
禁用(默认情况下)或启用服务器功能以加载数据本地文件。如果此选项设置为
true
,则启用从任何位置上传文件,而不管该AllowLoadLocalInfileInPath
选项指定的路径如何。-
AllowLoadLocalInfileInPath
,Allow Load Local Infile In Path
默认:
null
指定可以从中读取文件并将文件上传到服务器的安全路径。当相关
AllowLoadLocalInfile
选项设置为false
默认值时,只能AllowLoadLocalInfileInPath
加载安全路径或该选项指定的任何有效子文件夹中的文件。例如,如果设置为限制文件夹,/tmp
则文件请求 可以成功。不允许在此路径之外的相对路径或符号链接。/tmp/myfile
/tmp/myfolder/myfile
下表显示了 组合
AllowLoadLocalInfile
和AllowLoadLocalInfileInPath
连接字符串选项时产生的行为。-
AllowPublicKeyRetrieval
默认:
false
设置此选项以
true
通知连接器/NET 应从服务器检索 RSA 公钥,并且使用经典 MySQL 协议的连接在禁用 SSL 时默认会失败。当先前成功的连接尝试或启用池并且可以重用池连接时,可能会出现默认行为的例外情况。此选项是随 8.0.10 连接器引入的。警告此选项容易受到中间人攻击,因此仅应在可以通过其他方式确保连接到受信任服务器的情况下使用。
-
AllowUserVariables
,Allow User Variables
默认:
false
将此设置为
true
表示提供程序需要 SQL 中的用户变量。-
AllowZeroDateTime
,Allow Zero Datetime
默认:
false
如果设置为
True
, 则MySqlDataReader.GetValue()
返回MySqlDateTime
具有不允许值(例如零日期时间值)的日期或日期时间列的对象,以及System.DateTime
有效值的对象。如果设置为False
(默认设置),它会导致System.DateTime
为所有有效值返回一个对象,并为不允许的值抛出异常,例如零日期时间值。-
AutoEnlist
,Auto Enlist
默认:
true
如果
AutoEnlist
设置为true
,这是默认值,使用打开的连接参与此范围,它会在范围提交时提交,如果不提交TransactionScope
则回滚 。TransactionScope
但是,此功能被认为是安全敏感的,因此不能在中等信任环境中使用。从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
-
BlobAsUTF8ExcludePattern
默认:
null
一个 POSIX 风格的正则表达式,匹配不包含 UTF-8 字符数据的 BLOB 列的名称。有关使用详细信息,请参阅 第 4.5.16 节,“连接器/NET 的字符集注意事项”。
-
BlobAsUTF8IncludePattern
默认:
null
一个 POSIX 风格的正则表达式,匹配包含 UTF-8 字符数据的 BLOB 列的名称。有关使用详细信息,请参阅 第 4.5.16 节,“连接器/NET 的字符集注意事项”。
-
CheckParameters
,Check Parameters
默认:
true
指示是否应针对服务器检查存储的例程参数。
-
CommandInterceptors
,Command Interceptors
可以拦截SQL命令操作的拦截器列表。
-
ConnectionTimeout
, ,Connect Timeout
Connection Timeout
默认:
15
在终止尝试并生成错误之前等待连接到服务器的时间长度(以秒为单位)。
-
ConvertZeroDateTime
,Convert Zero Datetime
默认:
false
用于
true
拥有MySqlDataReader.GetValue()
并MySqlDataReader.GetDateTime()
返回DateTime.MinValue
具有不允许值的日期或日期时间列。-
DefaultAuthenticationPlugin
当指定了有效的身份验证插件时,优先于服务器端默认身份验证插件(请参阅 第 4.4.4 节,“连接器/NET 身份验证”)。该
Defaultauthenticationplugin
选项对于支持无用户和无密码 Kerberos 身份验证是必需的,其中从缓存或密钥分发中心 (KDC) 检索凭据。例如:MySqlConnectionStringBuilder settings = new MySqlConnectionStringBuilder() { Server = "localhost", UserID = "", Password = "", Database = "mydb", Port = 3306, DefaultAuthenticationPlugin = "authentication_kerberos_client" };
如果未设置任何值,则使用服务器端默认身份验证插件。
此选项是随 8.0.26 连接器引入的。
-
DefaultCommandTimeout
,Default Command Timeout
默认:
30
设置要使用的命令超时的默认值。这不会取代单个命令对象上的单个命令超时属性。如果设置命令超时属性,将使用该属性。
-
DefaultTableCacheAge
,Default Table Cache Age
默认:
60
指定
TableDirect
结果应缓存多长时间,以秒为单位。有关表缓存的使用信息,请参阅 第 4.5.3 节,“将 Connector/NET 与表缓存结合使用”。-
ExceptionInterceptors
,Exception Interceptors
MySqlException
可以对抛出的异常 进行分类的拦截器列表 。-
FunctionsReturnString
,Functions Return String
默认:
false
如果元数据中没有表名,则 连接器将值
binary
或 值作为字符串返回。varbinary
-
Includesecurityasserts
,Include security asserts
默认:
false
true
在部分信任环境中使用类时 必须设置为MySQLClientPermissions
,库安装在托管环境的 GAC 中。有关详细信息,请参阅 第 4.5.7 节“使用部分信任/中等信任”。从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
-
InteractiveSession
, ,Interactive
Interactive Session
默认:
false
如果设置为
true
,则客户端是交互式的。交互式客户端是其中CLIENT_INTERACTIVE
设置了服务器变量的客户端。如果设置了交互式客户端,则wait_timeout
变量设置为 的值interactive_timeout
。这段不活动时间过后,客户端会话就会超时。有关详细信息,请参阅 MySQL 参考手册中的服务器系统变量。从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
-
IntegratedSecurity
,Integrated Security
默认:
no
连接到服务器时使用 Windows 身份验证。默认情况下,它是关闭的。要启用,请指定一个值
yes
。(您也可以将该值sspi
用作 的替代 项yes
。)有关详细信息,请参阅 第 4.4.4 节,“连接器/NET 身份验证”。目前不支持 .NET Core 实现。
-
Logging
默认:
false
当该值设置为 时
true
,各种信息将发送到所有已配置的跟踪侦听器。有关更详细的说明,请参阅 第 4.5.12 节,“使用连接器/NET 跟踪源对象”。从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
-
ociConfigFile
默认为以下路径名之一:
~/.oci/config
在 Linux 和 macOS 主机类型上%HOMEDRIVE%%HOMEPATH%\.oci\config
在 Windows 主机类型上
如果设置,此选项指定 Oracle Cloud Infrastructure 配置文件的替代位置。Connector/NET 8.0.27(及更高版本)使用 Oracle Cloud Infrastructure SDK 获取 API 密钥的指纹以用于身份验证(
fingerprint
条目)和 PEM 文件的位置以及 API 密钥的私有部分(key_file
条目)。这些条目应该在[DEFAULT]
配置文件中指定。如果[DEFAULT]
配置文件中缺少配置文件,Connector/NET 会找到下一个要使用的配置文件。.NET Framework 4.5 不支持。
x
实施。-
OldGuids
,Old Guids
默认:
false
GUID 类型的后端表示已从 更改
BINARY(16)
为CHAR(36)
. 这样做是为了允许开发人员使用服务器功能UUID()
来填充 GUID 表——UUID()
生成一个 36 个字符的字符串。旧应用程序的开发人员可以将'Old Guids=true'
连接字符串添加到使用数据类型的 GUIDBINARY(16)
。-
PersistSecurityInfo
,Persist Security Info
默认:
false
当设置为
false
orno
(强烈推荐)时,如果连接打开或曾经处于打开状态,则安全敏感信息(例如密码)不会作为连接的一部分返回。重置连接字符串会重置所有连接字符串值,包括密码。可识别的值为true
、false
、yes
和no
。-
PipeName
, ,Pipe Name
Pipe
默认:
mysql
当设置为命名管道的名称时,
MySqlConnection
尝试连接到该命名管道上的 MySQL。此设置仅适用于 Windows 平台。重要的对于 MySQL 8.0.14 及更高版本、5.7.25 及更高版本以及 5.6.43 及更高版本,命名管道的最小权限被授予使用它们连接到服务器的客户端。但是,Connector/NET 只有在被授予对它们的完全访问权限时才能使用命名管道。解决方法是创建一个包含执行客户端应用程序的用户的 Windows 本地组。使用系统变量重新启动目标服务器,
named_pipe_full_access_group
并将本地组名称指定为其值。目前不支持 .NET Core 实现。
-
ProcedureCacheSize
, , ,Procedure Cache Size
procedure cache
procedurecache
默认:
25
设置存储过程缓存的大小。默认情况下,Connector/NET 存储有关最近使用的 25 个存储过程的元数据(输入/输出数据类型)。要禁用存储过程缓存,请将该值设置为零 (0)。
-
Replication
默认:
false
指示此连接是否要使用复制服务器。
从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
-
RespectBinaryFlags
,Respect Binary Flags
默认:
true
将此选项设置为
false
意味着 Connector/NET 将忽略服务器设置的列的二进制标志。-
SharedMemoryName
,Shared Memory Name
默认:
mysql
如果传输协议设置为 ,则用于通信的共享内存对象的名称
memory
。此设置仅适用于 Windows 平台。目前不支持 .NET Core 实现。
-
SqlServerMode
,Sql Server Mode
默认:
false
允许 SQL Server 语法。设置为 时
true
,使连接器/NET 能够支持符号周围的方括号而不是反引号。这使 Visual Studio 向导能够使用[
和]
字符之间的括号符号来使用 Connector/NET。此选项会影响性能,因此只应在必要时使用。-
TableCaching
, ,Table Cache
TableCache
默认:
false
启用或禁用
TableDirect
命令缓存。值true
启用缓存同时false
禁用它。有关表缓存的使用信息,请参阅 第 4.5.3 节,“将 Connector/NET 与表缓存结合使用”。-
TreatBlobsAsUTF8
,Treat BLOBs as UTF8
默认:
false
将此值设置为
true
会导致BLOB
列的字符集utf8
为该字符集的默认排序规则。要仅转换部分 BLOB 列,您可以使用'BlobAsUTF8IncludePattern'
和'BlobAsUTF8ExcludePattern'
关键字。将这些设置为与要分别包含或排除的列名匹配的正则表达式模式。-
TreatTinyAsBoolean
,Treat Tiny As Boolean
默认:
true
将此值设置为
false
导致TINYINT(1)
被视为INT
. 有关和数据类型的进一步说明,请参阅 数值数据类型语法。TINYINT
BOOL
-
UseAffectedRows
,Use Affected Rows
默认:
false
当 时
true
,连接报告更改了行而不是找到的行。-
UseCompression
, ,Compress
Use Compression
默认:
false
设置此选项以
true
启用客户端和服务器之间交换的数据包的压缩。此交换由 MySQL 客户端/服务器协议定义。如果客户端和服务器都支持 ZLIB 压缩,并且客户端已使用此选项请求压缩,则使用压缩。
一个压缩包头是:包长(3字节),包号(1字节),未压缩包长度(3字节)。未压缩数据包长度是原始未压缩数据包中的字节数。如果这是零,则此数据包中的数据尚未压缩。当使用压缩协议时,客户端或服务器都可以压缩数据包。但是,如果压缩后的长度大于原始长度,则不会发生压缩。因此,一些数据包将包含压缩数据,而其他数据包则不会。
-
UseDefaultCommandTimeoutForEF
,Use Default Command Timeout For EF
默认:
false
强制执行命令超时
EFMySqlCommand
,该超时设置为DefaultCommandTimeout
属性提供的值。-
UsePerformanceMonitor
, , ,Use Performance Monitor
UserPerfMon
PerfMon
默认:
false
指示应在执行期间更新性能计数器。
目前不支持 .NET Core 实现。
-
UseUsageAdvisor
, ,Use Usage Advisor
Usage Advisor
默认:
false
记录低效的数据库操作。
从 8.0.10 开始,.NET Core 2.0 实现支持此选项。
连接池选项。 以下选项与连接字符串中的连接池相关。有关连接池的更多信息,请参阅打开到单个服务器的连接。
-
CacheServerProperties
,Cache Server Properties
默认:
false
SHOW VARIABLES
指定每次返回池连接时 是否通过命令更新服务器变量设置 。启用此设置可加快连接池环境中的连接速度。您的应用程序不会收到其他连接对配置变量所做的任何更改的通知。-
ConnectionLifeTime
,Connection Lifetime
默认:
0
当连接返回到池中时,将其创建时间与当前时间进行比较,如果该时间跨度(以秒为单位)超过 指定的值,则连接被销毁
Connection Lifetime
。此选项在集群配置中很有用,可强制在正在运行的服务器和刚刚联机的服务器之间进行负载平衡。零 (0) 值将池连接设置为最大连接超时。-
ConnectionReset
,Connection Reset
默认:
false
如果
true
,则连接状态在从池中检索时重置。默认值 false 避免在获取连接时进行额外的服务器往返,但不会重置连接状态。-
MaximumPoolsize
, , ,Max Pool Size
Maximum Pool Size
MaxPoolSize
默认:
100
池中允许的最大连接数。
-
MinimumPoolSize
, , ,Min Pool Size
Minimum Pool Size
MinPoolSize
默认:
0
池中允许的最小连接数。
-
Pooling
默认:
true
当 时
true
,MySqlConnection
从适当的池中提取对象,或者如果需要,创建对象并将其添加到适当的池中。可识别的值为true
、false
、yes
和no
。
以下连接选项对使用 X 协议建立的连接有效。Connector/NET 8.0 将此部分中的选项公开为
MySqlX.XDevAPI.MySqlXConnectionStringBuilder
类中的属性。
-
Auth
, ,Authentication
Authentication Mode
与 X 协议一起使用的身份验证机制。此选项是随 8.0.9 连接器引入的,具有以下不区分大小写的值:
MYSQL41
、、PLAIN
和EXTERNAL
。如果Auth
未设置该选项,则根据连接类型选择机制。PLAIN
用于安全连接(TLS 或 Unix 套接字)并MYSQL41
用于未加密的连接。EXTERNAL
用于外部身份验证方法,例如 PAM、Windows 登录 ID、LDAP 或 Kerberos。(EXTERNAL
目前不支持。)Auth
经典 MySQL 协议连接不支持 该选项,NotSupportedException
如果使用则返回。-
Compression
,use-compression
默认:
preferred
当客户端和服务器都支持 X 协议连接并且客户端使用此选项请求压缩时,压缩用于发送和接收数据。算法协商成功后,Connector/NET 可以立即开始压缩数据。为防止压缩小数据包或已压缩的数据,Connector/NET 定义了 1000 字节的大小阈值。
当服务器支持多种压缩算法时,Connector/NET 默认应用以下优先级:(
zstd_stream
第一)、lz4_message
(第二)和deflate_stream
(第三)。该deflate_stream
算法支持与 .NET Core 一起使用,但不支持与 .NET Framework 一起使用。小费使用该
compression-algorithms
选项以不同的顺序指定一个或多个支持的算法。算法按照客户提供的顺序进行协商。有关使用详细信息,请参阅compression-algorithms
选项。连接器/NET 8.0.20 版本中添加了 X 协议连接的数据压缩。该
Compression
选项接受以下值:preferred
如果服务器支持客户端选择的算法,则应用数据压缩。否则,将不压缩地发送和接收数据。required
以确保使用压缩或终止连接并返回错误消息。disabled
以防止数据压缩。
-
compression-algorithms
,CompressionAlgorithms
从 Connector/NET 8.0.22 开始,客户端应用程序可以指定与服务器协商支持的压缩算法的顺序。连接选项的值
Compression
必须设置为preferred
或 才能required
应用此选项。不支持的算法将被忽略。此选项接受以下算法名称和同义词:
lz4_message
或者lz4
zstd_stream
或者zstd
deflate_stream
或deflate
(不适用于 .NET Framework)
算法名称和同义词可以组合在逗号分隔的列表中或作为独立值提供(带或不带括号)。例子:
// Compression option set to preferred (default) MySQLX.GetSession("mysqlx://test:test@localhost:3306?compression-algorithms=[lz4_message,deflate] MySQLX.GetSession("mysqlx://test:test@localhost:3306?compressionalgorithms=lz4 MySQLX.GetSession("mysqlx://test:test@localhost:3306?compression=preferred&compression-algorithms=[zstd] // Compression option set to required MySQLX.GetSession("mysqlx://test:test@localhost:3306?compression=required&compression-algorithms=[zstd_stream,lz4_message] MySQLX.GetSession("mysqlx://test:test@localhost:3306?compression=required&compression-algorithms=[lz4] MySQLX.GetSession("mysqlx://test:test@localhost:3306?compression=required&compression-algorithms=zstd_stream // Connection string MySQLX.GetSession("server=localhost;port=3306;uid=test;password=test;compression=required;compression-algorithms=lz4_message;") // Anonymous object MySQLX.GetSession(new { server = "localhost", port = "3306", uid = "test", password = "test", compression="required", compressionalgorithms = "deflate_stream" })
有关其他信息,请参阅 使用 X 插件进行连接压缩。
-
connection-attributes
,ConnectionAttributes
默认:
true
此选项在 Connector/NET 8.0.16 中引入,用于提交一组属性以与默认连接属性一起传递给服务器。客户端发送的连接属性数据的总大小受
performance_schema_session_connect_attrs_size
服务器变量值的限制。数据包的总大小应小于服务器变量的值。有关连接属性的一般信息,请参阅 性能模式连接属性表。connection-attributes 参数值可以为空(与指定相同
true
)、布尔值(true
或false
启用或禁用默认属性集)、列表或零个或多个key=value
用逗号分隔的说明符(除了默认属性集)。在列表中,缺少的键值作为值进行评估NULL
。例子:// Sessions MySQLX.GetSession($"mysqlx://user@host/schema") MySQLX.GetSession($"mysqlx://user@host/schema?connection-attributes") MySQLX.GetSession($"mysqlx://user@host/schema?connection-attributes=true") MySQLX.GetSession($"mysqlx://user@host/schema?connection-attributes=false") MySQLX.GetSession($"mysqlx://user@host/schema?connection-attributes=[attr1=val1,attr2,attr3=]") MySQLX.GetSession($"mysqlx://user@host/schema?connection-attributes=[]") // Pooling MySQLX.GetClient($"mysqlx://user@host/schema") MySQLX.GetClient($"mysqlx://user@host/schema?connection-attributes") MySQLX.GetClient($"mysqlx://user@host/schema?connection-attributes=true") MySQLX.GetClient($"mysqlx://user@host/schema?connection-attributes=false") MySQLX.GetClient($"mysqlx://user@host/schema?connection-attributes=[attr1=val1,attr2,attr3=]") MySQLX.GetClient($"mysqlx://user@host/schema?connection-attributes=[]")
应用程序定义的属性名称不能以 开头,
_
因为此类名称是为内部属性保留的。如果未以有效方式指定连接属性,则会发生错误并且连接尝试失败。
-
Connect-Timeout
,ConnectTimeout
默认:
10000
在终止尝试并生成错误之前等待 X 协议连接到服务器的时间长度(以毫秒为单位)。您可以通过将该值设置为零来禁用连接超时。该选项可以指定如下:
类似 URI 的连接字符串示例
MySQLX.GetSession("mysqlx://test:test@localhost:33060?connect-timeout=2000");
连接字符串示例
MySQLX.GetSession("server=localhost;user=test;port=33060;connect-timeout=2000");
匿名对象示例
MySQLX.GetSession(new { server="localhost", user="test", port=33060, connecttimeout=2000 });
MySqlXConnectionStringBuilder
类示例var builder = new MySqlXConnectionStringBuilder("server=localhost;user=test;port=33060"); builder.ConnectTimeout = 2000; MySQLX.GetSession(builder.ConnectionString);
-
SslCrl
,Ssl-Crl
默认:
null
包含证书吊销列表的本地文件的路径。
重要的尽管
SslCrl
连接字符串选项可以有效使用,但应用它会引发一条NotSupportedException
消息。