MySQL 连接器/NET 开发人员指南  / 第 4 章连接器/NET 连接  /  4.5 Connector/NET 8.0 连接选项参考

4.5 Connector/NET 8.0 连接选项参考

本章描述了全套 MySQL Connector/NET 8.0 连接选项。您用来连接服务器的协议(经典 MySQL 协议或 X 协议)决定了您应该使用哪些选项。连接选项有一个默认值,您可以通过在连接字符串(经典 MySQL 协议和 X 协议)或类似 URI 的连接字符串(X 协议)中定义新值来覆盖该默认值。连接器/NET 选项名称和同义词不区分大小写。

有关如何使用连接字符串的说明,请参阅 第 4.1 节 “创建连接器/NET 连接字符串”。有关其他连接方式,请参阅 使用类似 URI 的字符串或键值对连接到服务器

以下部分列出了适用于两种协议的连接选项,仅适用于经典 MySQL 协议和仅适用于 X 协议:

经典 MySQL 协议和 X 协议的选项

以下连接器/NET 连接选项可与任一协议一起使用。Connector/NET 8.0 将此部分中的选项公开为 MySql.Data.MySqlClient.MySqlConnectionStringBuilderMySqlX.XDevAPI.MySqlXConnectionStringBuilder 类中的属性。

CertificateFile , Certificate File

默认:null

此选项指定 PKCS #12 格式 ( ) 证书文件的路径.pfx。有关使用示例,请参阅 第 6.7.2 节,“在连接器/NET 中使用 PFX 证书”

CertificatePassword , Certificate Password

默认:null

指定与使用选项指定的证书一起使用的密码 CertificateFile。有关使用示例,请参阅第 6.7.2 节,“在连接器/NET 中使用 PFX 证书”

CertificateStoreLocation , Certificate Store Location

默认:null

使您能够访问个人存储中保存的证书,而不是使用证书文件和密码组合。有关使用示例,请参阅 第 6.7.2 节,“在连接器/NET 中使用 PFX 证书”

CertificateThumbprint , Certificate Thumbprint

默认:null

指定证书指纹以确保正确识别个人存储中包含的证书。有关使用示例,请参阅 第 6.7.2 节,“在连接器/NET 中使用 PFX 证书”

CharacterSet , , Character Set CharSet

指定应用于对发送到服务器的所有查询进行编码的字符集。结果仍然以结果数据的字符集返回。

ConnectionProtocol , , Protocol Connection Protocol

默认值:(sockettcp

指定与服务器建立的连接类型。值可以是:

  • sockettcp使用 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连接选项设置为 、 或 的值RequiredVerifyCA启用 VerifyFull;否则,它会被忽略。

使用 PEM 证书时,此选项在 SslMode连接选项设置为VerifyCA或 的值时启用VerifyFull;否则,它会被忽略。

有关使用示例,请参阅 第 6.7.1 节,“在连接器/NET 中使用 PEM 证书”

SslCert , Ssl-Cert

默认:null

用于建立加密连接的 PEM 格式的 SSL 证书文件的名称。仅当VerifyFullSslMode连接选项设置并且 SslCa连接选项使用 PEM 证书时,此选项才会起作用;否则,它会被忽略。有关使用示例,请参阅 第 6.7.1 节,“在连接器/NET 中使用 PEM 证书”

SslKey , Ssl-Key

默认:null

用于建立加密连接的 PEM 格式的 SSL 密钥文件的名称。仅当VerifyFullSslMode连接选项设置并且 SslCa连接选项使用 PEM 证书时,此选项才会起作用;否则,它会被忽略。有关使用示例,请参阅 第 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 版本并且连接字符串选项的值未设置为DisabledNone(在 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 登录帐户。

仅限经典 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

下表显示了 组合AllowLoadLocalInfileAllowLoadLocalInfileInPath连接字符串选项时产生的行为。

AllowLoadLocalInfile 值 AllowLoadLocalInfileInPath 值 行为
true 空字符串或null 允许所有上传。
true 有效路径 允许所有上传(不考虑路径)。
false 空字符串或null 不允许上传。
false 有效路径 只允许从指定的文件夹和子文件夹上传。
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 列的名称。有关使用详细信息 ,请参阅 第 5.16 节,“连接器/NET 的字符集注意事项” 。

BlobAsUTF8IncludePattern

默认:null

一个 POSIX 风格的正则表达式,匹配包含 UTF-8 字符数据的 BLOB 列的名称。有关使用详细信息 ,请参阅 第 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 节,“连接器/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结果应缓存多长时间,以秒为单位。有关表缓存的使用信息,请参阅 第 5.3 节,“将 Connector/NET 与表缓存结合使用”

ExceptionInterceptors , Exception Interceptors

MySqlException可以对抛出的异常 进行分类的拦截器列表 。

FunctionsReturnString , Functions Return String

默认:false

如果元数据中没有表名,则 连接器将值binary或 值作为字符串返回。varbinary

Includesecurityasserts , Include security asserts

默认:false

true在部分信任环境中使用类时 必须设置为MySQLClientPermissions,库安装在托管环境的 GAC 中。有关详细信息,请参阅 第 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 节“连接器/NET 身份验证”

目前不支持 .NET Core 实现。

Logging

默认:false

当该值设置为 时true,各种信息将发送到所有已配置的跟踪侦听器。有关更详细的说明,请参阅 第 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'连接字符串添加到使用数据类型的 GUID BINARY(16)

PersistSecurityInfo , Persist Security Info

默认:false

当设置为falseor no(强烈推荐)时,如果连接打开或曾经处于打开状态,则安全敏感信息(例如密码)不会作为连接的一部分返回。重置连接字符串会重置所有连接字符串值,包括密码。可识别的值为truefalseyesno

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禁用它。有关表缓存的使用信息,请参阅 第 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. 有关和数据类型的进一步说明,请参阅 数值数据类型语法TINYINTBOOL

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

当 时trueMySqlConnection从适当的池中提取对象,或者如果需要,创建对象并将其添加到适当的池中。可识别的值为 truefalseyesno

仅 X 协议的选项

以下连接选项对使用 X 协议建立的连接有效。Connector/NET 8.0 将此部分中的选项公开为 MySqlX.XDevAPI.MySqlXConnectionStringBuilder 类中的属性。

Auth , , Authentication Authentication Mode

与 X 协议一起使用的身份验证机制。此选项是随 8.0.9 连接器引入的,具有以下不区分大小写的值: MYSQL41、、PLAINEXTERNAL。如果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_streamdeflate(不适用于 .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)、布尔值(truefalse启用或禁用默认属性集)、列表或零个或多个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消息。