https://mysqlconnector.net/connection-options/
連接選項
MySqlConnector支持大多數Oracle的Connector / NET連接選項。
還有一些只能由MySqlConnector支持一些獨特的選項,用於替換MySql.Data該修正錯誤,增加了新的功能,並提高了數據庫的訪問性能。立即安裝。
基本選項
這些是需要定義以連接到MySQL數據庫的基本選項。
| 名稱 | 默認 | 描述 |
|---|---|---|
| 主機,服務器,數據源,數據源,地址,地址,網絡地址 | 本地主機 | 要連接的MySQL服務器的主機名或網絡地址。可以在逗號分隔的列表中指定多個主機。 在類Unix系統上,這可以是MySQL套接字文件的完全限定路徑,這將導致使用Unix套接字而不是TCP / IP套接字。只能指定一個套接字名稱。 |
| 港口 | 3306 | MySQL服務器正在偵聽連接的TCP端口。 |
| 用戶ID,用戶ID,用戶名,Uid,用戶名,用戶 | MySQL用戶標識。 | |
| 密碼,密碼 | MySQL用戶的密碼。 | |
| 數據庫,初始目錄 | (可選)要使用的初始數據庫的區分大小寫的名稱。如果MySQL用戶帳戶僅具有服務器上特定數據庫的訪問權限,則可能需要這樣做。 | |
| 協議,ConnectionProtocol,連接協議 | 插座 | 如何連接到MySQL服務器。此選項具有以下值:
|
| 管道,PipeName,管道名稱 | MYSQL | 用於連接服務器的Windows命名管道的名稱。您還必須設置ConnectionProtocol=pipe使用命名管道。 |
SSL / TLS選項
這些是為了配置連接以使用SSL / TLS而需要使用的選項。
| 名稱 | 默認 | 描述 |
|---|---|---|
| SSL模式,SslMode | 首選 | 此選項具有以下值:
|
| 證書文件,證書文件 | 指定PKCS#12(.pfx)格式的證書文件的路徑,該格式包含用於相互身份驗證的捆綁證書和私鑰。要從PEM編碼的證書和密鑰創建PKCS#12捆綁包,請使用openssl pkcs12 -in cert.pem -inkey key.pem -export -out bundle.pfx。如果SslCert和SslKey使用此選項,則不應指定此選項。 |
|
| 證書密碼,CertificatePassword | 指定使用該CertificateFile選項指定的證書的密碼。如果證書文件未受密碼保護,則不需要。 |
|
| SslCert,Ssl-Cert | 指定PEM格式的客戶端SSL證書文件的路徑。SslKey也必須指定,CertificateFile不應該。netstandard1.3或netstandard2.0平台不支持此選項。 |
|
| SslKey,Ssl-Key | 指定PEM格式的客戶端SSL私鑰的路徑。SslCert也必須指定,CertificateFile不應該。 |
|
| CA證書文件,CACertificateFile,SslCa,Ssl-Ca | 此選項指定PEM編碼(.pem)格式的CA證書文件的路徑。這應該與SslMode=VerifyCA或者SslMode=VerifyFull用於驗證操作系統的證書存儲不信任的CA證書。 |
|
| 證書商店位置,CertificateStoreLocation | 沒有 | 指定是否應使用計算機上證書存儲中的證書加密連接。默認值None表示未使用證書存儲區; 值的值CurrentUser或LocalMachine使用指定的商店。 |
| 證書指紋,CertificateThumbprint | 指定應從上述設置中指定的證書庫中使用哪個證書。必須使用此選項指示應將商店中的哪個證書用於身份驗證。 |
連接池選項
默認情況下啟用連接池。這些選項用於配置它。
| 名稱 | 默認 | 描述 |
|---|---|---|
| 池 | 真正 | 啟用連接池。啟用MySqlConnection.Open池時,如果有可用池,則從池中檢索打開的連接(如果沒有,則從中打開新連接),並且Close/ Dispose返回池的打開連接。 |
| 連接生命周期,ConnectionLifeTime | 0 | 控制與服務器的連接可以打開的最長時間。如果ConnectionLifeTime連接創建后的連接超過秒,則會銷毀返回到池的連接。默認值零(0)表示池連接永遠不會導致ConnectionLifeTime超時。 |
| 連接重置,ConnectionReset | true |
如果true,從池中檢索連接狀態時重置連接狀態。默認值true確保連接處於相同狀態,無論是新創建還是從池中檢索。的值false可避免獲取連接時再有一次額外的服務器往返行程,但連接狀態不會被重置,這意味着會話變量及任何先前使用其他連接會話狀態的變化結轉。 |
| 連接空閑Ping時間,連接空閑Ping時間(實驗) | 0 | 當連接從池中取出,並ConnectionReset是false,如果連接已經在池中閑置長於服務器將被ping通ConnectionIdlePingTime秒。如果ping服務器失敗,連接池將自動打開一個新連接。這可以確保MySqlConnection在調用Open/ 之后處於有效的打開狀態OpenAsync,代價是額外的服務器往返。對於高性能方案,您可能希望設置ConnectionIdlePingTime 為非零值,以使連接池假定最近返回的連接仍處於打開狀態。如果連接斷開,它會拋出從第一次調用ExecuteNonQuery,ExecuteReader等; 您的代碼應該處理該失敗並重試連接。如果ConnectionReset 是,則此選項無效true,因為這將導致連接重置數據包被發送到服務器,使ping多余。 |
| 連接空閑超時,ConnectionIdleTimeout | 180 | 連接在池中保持空閑的時間(以秒為單位)。任何MinimumPoolSize空閑時間超過連接的連接ConnectionIdleTimeout都可能被后台任務關閉。后台任務每隔一分鍾或一半運行ConnectionIdleTimeout,以較頻繁的為准。值為零(0)表示池連接永遠不會產生ConnectionIdleTimeout,如果池增長到其最大大小,它將永遠不會變小。 |
| 最大池大小,最大池大小,MaximumPoolsize,maxpoolsize | 100 | 池中允許的最大連接數。 |
| 最小池大小,最小池大小,MinimumPoolSize,minpoolsize | 0 | 如果達到ConnectionIdleTimeout,則在池中保留的最小連接數。 |
與多個服務器的連接池
該Server選項支持多個逗號分隔的主機名。當它與連接池一起使用時,該LoadBalance選項控制如何跨后端服務器分配負載。
RoundRobin(默認值),:將打開Random總MaximumPoolSize連接數,但它們可能在后端不均勻分布。LeastConnections:MaximumPoolSize將打開總連接數,它們將均勻分布在后端。將以最近最少使用的順序從池中選擇活動連接,這不能確保跨后端的均勻負載。您應該設置MaximumPoolSize服務器數量乘以每個后端服務器所需的最大打開連接數。Failover:所有連接最初將發送到列表中的第一個服務器。您應該設置MaximumPoolSize每台服務器所需的最大打開連接數。
其他選擇
這些是MySqlConnector支持的其他選項。它們被設置為合理的默認值,通常不需要進行調整。
| 名稱 | 默認 | 描述 |
|---|---|---|
| AllowPublicKeyRetrieval,允許公鑰檢索 | 假 | 如果用戶帳戶使用sha256_password身份驗證,則必須在傳輸過程中保護密碼; TLS是首選的機制,但如果它不可用,則將使用RSA公鑰加密。要指定服務器的RSA公鑰,請使用ServerRSAPublicKeyFile連接字符串設置,或設置AllowPublicKeyRetrieval=True為允許客戶端自動從服務器請求公鑰。請注意,AllowPublicKeyRetrieval=True 可能允許惡意代理執行MITM攻擊以獲取明文密碼,因此False默認情況下它必須明確啟用。 |
| AllowUserVariables,允許用戶變量 | 假 | 允許@在SQL語句中使用用戶定義的變量(帶前綴)。默認值(false)僅允許使用@-prefixed name來引用命令參數。 |
| AllowZeroDateTime,允許零日期時間 | 假 | 如果設置為 真正所有`DATE`,`DATETIME`和`TIMESTAMP`列都作為`MySqlDateTime`對象而不是`DateTime`返回。這允許從數據庫中檢索特殊的“零”日期值`0000-00-00`。如果false(默認)日期列返回為“DateTime”值,則拋出不可表示日期的異常。 |
| ApplicationName,應用程序名稱 | 空值 | 設置 PROGRAM_NAME連接屬性傳遞給MySQL服務器。該值可以由診斷工具顯示,例如,作為MySQL Workbench中“Client Connections”中的“Program”列。 |
| 字符集,字符集,字符集 | utf8mb4 | MySqlConnector始終用於utf8mb4從MySQL服務器發送和接收字符串。可以指定此選項(為了向后兼容),但會忽略它。 |
| 壓縮,使用壓縮,使用壓縮 | 假 | 如果為true(並且服務器支持壓縮),則壓縮客戶端和服務器之間發送的數據包。除非應用程序和數據庫服務器之間存在高延遲或低帶寬的網絡鏈接,否則此選項在實踐中不太可能有用。您應該使用和不使用此選項來衡量性能,以確定它是否對您的環境有益。 |
| 連接超時,連接超時,ConnectionTimeout | 15 | 在終止嘗試並生成錯誤之前等待連接到服務器的時間長度(以秒為單位)。 |
| 轉換零日期時間,ConvertZeroDateTime | 假 | 如果為true,則MySqlDataReader.GetValue()和MySqlDataReader.GetDateTime()將為具有不允許值的日期或日期時間列返回DateTime.MinValue。 |
| DateTimeKind | 不明 | 該DateTimeKind時使用MySqlDataReader返回DateTime。如果設置為Utc或Local,MySqlException則如果DateTime命令參數的a 或者分別為a Kind,則拋出a 。LocalUtc |
| GuidFormat | 默認 | 確定應將哪個列類型(如果有)讀取為a
|
| 默認命令超時,命令超時,DefaultCommandTimeout | 三十 | 每個命令在超時和拋出異常之前可以執行的時間長度(以秒為單位),或者為零以禁用超時。有關 如何確定此更多說明,請參閱Microsoft文檔中的注釋。 |
| IgnoreCommandTransaction,忽略命令事務 | 假 | 如果true,則MySqlCommand.Transaction在執行命令時忽略值。這與Connector / NET行為相匹配,可以使移植代碼更容易。有關更多信息,請參閱事務使用。 |
| 交互式,交互式會話,InteractiveSession | 假 | 如果true,會話wait_timeout變量是從全局初始化的interactive_timeout |
| 保持活力,保持活力 | 0 | TCP Keepalive空閑時間。值為0表示使用了OS Default keepalive設置。在Windows上,大於0的值是在發送第一個keepalive數據包之前的空閑連接時間(以秒為單位)。由於.NET Core的限制,基於Unix的操作系統將始終使用操作系統默認保持活動設置。 |
| 負載平衡,負載平衡 | ROUNDROBIN |
|
| 老Guids,OldGuids | 假 | 過時的; 請改用該GuidFormat選項。 |
| 堅持安全信息,PersistSecurityInfo | 假 | 如果設置為false或no(強烈建議),則在連接處於打開狀態或處於打開狀態時,安全性敏感信息(如密碼)不會作為連接的一部分返回。重置連接字符串會重置所有連接字符串值,包括密碼。認可的價值觀是真實的,錯誤的,是的,是的。 |
| ServerRSAPublicKeyFile,服務器RSA公鑰文件 | 用於sha256_password身份驗證 見下的評論AllowPublicKeyRetrieval。 |
|
| ServerSPN,服務器SPN | 對於MariaDB auth_gssapi_client身份驗證。指定服務器的服務主體名稱(以驗證是否使用正確的服務器進行身份驗證)。 |
|
| 將Tiny As視為布爾值,TreatTinyAsBoolean | 真正 | 設置為時true,TINYINT(1)值將作為布爾值返回。將此設置為false導致TINYINT(1)以sbyte / byte返回。 |
| 使用受影響的行,UseAffectedRows | 假 | 當false(默認)時,連接報告找到行而不是已更改(受影響)的行。設置為true僅報告實際更改的行數UPDATE或INSERT … ON DUPLICATE KEY UPDATE語句。 |
| 使用XA Transactions,UseXaTransactions | 真正 | 何時true(默認),使用TransactionScope或MySqlConnection.EnlistTransaction 將使用XA交易。這允許真正的分布式事務,但可能與服務器復制不兼容; 還有其他限制。設置false為時,使用常規MySQL事務,就像Connector / NET一樣。 |
不支持的選項
這些選項由Connector / NET使用,但MySqlConnector不支持。通常,從Connector / NET遷移到MySqlConnector時,應從連接字符串中刪除它們。
| 名稱 | 默認 | 描述 |
|---|---|---|
| AllowBatch,允許批處理 | 真正 | MySqlConnector始終允許批處理語句。 |
| CheckParameters,檢查參數 | 真正 | MySqlConnector始終有效地檢查存儲過程參數; 沒有必要禁用它。 |
| CommandInterceptors,命令攔截器 | MySqlConnector不支持此可擴展性機制,該機制與異步操作不兼容。 | |
| ExceptionInterceptors,Exception Interceptors | MySqlConnector不支持此可擴展性機制。 | |
| FunctionsReturnString,函數返回String | 假 | 不支持。BLOB總是返回為byte[]。 |
| IncludeSecurityAsserts,Include Security Asserts | 假 | 不支持。對於部分信任環境。 |
| IntegratedSecurity,Integrated Security | 假 | 不支持Windows身份驗證。 |
| 記錄 | 假 | 請改用MySqlConnector日志(更靈活)。 |
| OldSyntax,舊語法,UseOldSyntax,使用舊語法 | 假 | 此選項在Connector / NET中已棄用,在MySqlConnector中不受支持。 |
| ProcedureCacheSize,Procedure Cache Size,ProcedureCache,Procedure Cache | MySqlConnector對緩存的存儲過程元數據量沒有限制。它需要非常少的內存。 | |
| RespectBinaryFlags,尊重二進制標志 | 真正 | 始終遵守列的二進制類型。 |
| SharedMemoryName,共享內存名稱 | 真正 | 共享內存(在Windows上)不支持作為連接協議。 |
| SqlServerMode,Sql Server Mode | 假 | 不支持。 |
| TreatBlobsAsUtf8,將BLOB視為UTF8 | 假 | 不支持。BLOB總是返回為byte[]。 |
| UsePerformanceMonitor,Use Performance Monitor,UserPerfMon,PerfMon | 假 | 不支持。 |
| 使用UsageAdvisor,使用Usage Advisor,Usage Advisor | 假 |
