MySqlConnector連接選項



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服務器。此選項具有以下值:
  • 套接字(默認):使用TCP / IP套接字。
  • Unix:使用Unix套接字。
  • 管道:使用Windows命名管道。
管道,PipeName,管道名稱 MYSQL 用於連接服務器的Windows命名管道的名稱。您還必須設置ConnectionProtocol=pipe使用命名管道。

SSL / TLS選項

這些是為了配置連接以使用SSL / TLS而需要使用的選項。

名稱 默認 描述
SSL模式,SslMode 首選 此選項具有以下值:
  • 首選 - (這是默認值)。如果服務器支持SSL,請使用SSL。
  •  - 不使用SSL。
  • 必需 - 始終使用SSL。如果服務器不支持SSL,則拒絕連接。不驗證CA或主機名。
  • VerifyCA - 始終使用SSL。驗證CA但容許主機名不匹配。
  • VerifyFull - 始終使用SSL。驗證CA和主機名。
證書文件,證書文件   指定PKCS#12(.pfx)格式的證書文件的路徑,該格式包含用於相互身份驗證的捆綁證書和私鑰。要從PEM編碼的證書和密鑰創建PKCS#12捆綁包,請使用openssl pkcs12 -in cert.pem -inkey key.pem -export -out bundle.pfx如果SslCertSslKey使用此選項,則不應指定此選項
證書密碼,CertificatePassword   指定使用該CertificateFile選項指定的證書的密碼如果證書文件未受密碼保護,則不需要。
SslCert,Ssl-Cert   指定PEM格式的客戶端SSL證書文件的路徑。SslKey也必須指定,CertificateFile不應該。netstandard1.3netstandard2.0平台不支持此選項
SslKey,Ssl-Key   指定PEM格式的客戶端SSL私鑰的路徑。SslCert也必須指定,CertificateFile不應該。
CA證書文件,CACertificateFile,SslCa,Ssl-Ca   此選項指定PEM編碼(.pem)格式的CA證書文件的路徑。這應該與SslMode=VerifyCA或者SslMode=VerifyFull用於驗證操作系統的證書存儲不信任的CA證書。
證書商店位置,CertificateStoreLocation 沒有 指定是否應使用計算機上證書存儲中的證書加密連接。默認值None表示未使用證書存儲區; 值的值CurrentUserLocalMachine使用指定的商店。
證書指紋,CertificateThumbprint   指定應從上述設置中指定的證書庫中使用哪個證書。必須使用此選項指示應將商店中的哪個證書用於身份驗證。

連接池選項

默認情況下啟用連接池。這些選項用於配置它。

名稱 默認 描述
真正 啟用連接池。啟用MySqlConnection.Open池時,如果有可用池,則從池中檢索打開的連接(如果沒有,則從中打開新連接),並且CloseDispose返回池的打開連接。
連接生命周期,ConnectionLifeTime 0 控制與服務器的連接可以打開的最長時間。如果ConnectionLifeTime連接創建后的連接超過秒,則會銷毀返回到池的連接。默認值零(0)表示池連接永遠不會導致ConnectionLifeTime超時。
連接重置,ConnectionReset true 如果true,從池中檢索連接狀態時重置連接狀態。默認值true確保連接處於相同狀態,無論是新創建還是從池中檢索。的值false可避免獲取連接時再有一次額外的服務器往返行程,但連接狀態不會被重置,這意味着會話變量及任何先前使用其他連接會話狀態的變化結轉。
連接空閑Ping時間,連接空閑Ping時間(實驗) 0 當連接從池中取出,並ConnectionResetfalse,如果連接已經在池中閑置長於服務器將被ping通ConnectionIdlePingTime秒。如果ping服務器失敗,連接池將自動打開一個新連接。這可以確保MySqlConnection在調用Open之后處於有效的打開狀態OpenAsync,代價是額外的服務器往返。對於高性能方案,您可能希望設置ConnectionIdlePingTime 為非零值,以使連接池假定最近返回的連接仍處於打開狀態。如果連接斷開,它會拋出從第一次調用ExecuteNonQueryExecuteReader等; 您的代碼應該處理該失敗並重試連接。如果ConnectionReset 是,則此選項無效true,因為這將導致連接重置數據包被發送到服務器,使ping多余。
連接空閑超時,ConnectionIdleTimeout 180 連接在池中保持空閑的時間(以秒為單位)。任何MinimumPoolSize空閑時間超過連接的連接ConnectionIdleTimeout都可能被后台任務關閉。后台任務每隔一分鍾或一半運行ConnectionIdleTimeout,以較頻繁的為准。值為零(0)表示池連接永遠不會產生ConnectionIdleTimeout,如果池增長到其最大大小,它將永遠不會變小。
最大池大小,最大池大小,MaximumPoolsize,maxpoolsize 100 池中允許的最大連接數。
最小池大小,最小池大小,MinimumPoolSize,minpoolsize 0 如果達到ConnectionIdleTimeout,則在池中保留的最小連接數。

與多個服務器的連接池

Server選項支持多個逗號分隔的主機名。當它與連接池一起使用時,該LoadBalance選項控制如何跨后端服務器分配負載。

  • RoundRobin(默認值),:將打開RandomMaximumPoolSize連接數,但它們可能在后端不均勻分布。
  • LeastConnectionsMaximumPoolSize將打開連接數,它們將均勻分布在后端。將以最近最少使用的順序從池中選擇活動連接,這不能確保跨后端的均勻負載。您應該設置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如果設置為UtcLocalMySqlException則如果DateTime命令參數的a 或者分別為Kind則拋出a LocalUtc
GuidFormat 默認

確定應將哪個列類型(如果有)讀取為a System.Guid選項包括:

Char36
所有 CHAR(36) 列都 Guid 使用帶有連字符的小寫十六進制讀/寫,匹配 UUID()
的char32
所有 CHAR(32) 列都 Guid 使用不帶連字符的小寫十六進制讀/寫
Binary16
所有 BINARY(16) 列都 Guid 使用big-endian字節順序進行讀/寫,匹配 UUID_TO_BIN(x)
TimeSwapBinary16
所有 BINARY(16) 列都是 Guid 使用big-endian字節順序讀取/寫入,時間部分交換,匹配 UUID_TO_BIN(x,1)
LittleEndianBinary16
所有 BINARY(16) 列的讀/寫為 Guid 使用little-endian字節順序,即所用的字節順序 Guid.ToByteArray() Guid(byte[]) 構造。
沒有
沒有列類型會自動讀取為 Guid
默認
同樣 Char36 如此 OldGuids=False 同樣 LittleEndianBinary16 如此 OldGuids=True
默認命令超時,命令超時,DefaultCommandTimeout 三十 每個命令在超時和拋出異常之前可以執行的時間長度(以秒為單位),或者為零以禁用超時。有關 如何確定此更多說明,請參閱Microsoft文檔中的注釋。
IgnoreCommandTransaction,忽略命令事務 如果true,則MySqlCommand.Transaction在執行命令時忽略這與Connector / NET行為相匹配,可以使移植代碼更容易。有關更多信息,請參閱事務使用
交互式,交互式會話,InteractiveSession 如果true,會話wait_timeout變量是從全局初始化的interactive_timeout value instead of the global wait_timeout value.
保持活力,保持活力 0 TCP Keepalive空閑時間。值為0表示使用了OS Default keepalive設置。在Windows上,大於0的值是在發送第一個keepalive數據包之前的空閑連接時間(以秒為單位)。由於.NET Core的限制,基於Unix的操作系統將始終使用操作系統默認保持活動設置。
負載平衡,負載平衡 ROUNDROBIN

Host包含多個以逗號分隔的主機名時使用的負載平衡策略選項包括:

ROUNDROBIN
為此連接池打開的每個新連接都使用下一個主機名(按順序循環)。需要 Pooling=True 這是默認值 Pooling=True
故障轉移
每個新連接都嘗試連接到第一個主機; 僅當連接到第一個主機失敗時才使用后續主機。這是默認值 Pooling=False
隨機
服務器以隨機順序嘗試。
LeastConnections
按此連接池中當前打開的連接數的升序嘗試服務器。需要 Pooling=True
老Guids,OldGuids 過時的; 請改用該GuidFormat選項。
堅持安全信息,PersistSecurityInfo 如果設置為false或no(強烈建議),則在連接處於打開狀態或處於打開狀態時,安全性敏感信息(如密碼)不會作為連接的一部分返回。重置連接字符串會重置所有連接字符串值,包括密碼。認可的價值觀是真實的,錯誤的,是的,是的。
ServerRSAPublicKeyFile,服務器RSA公鑰文件   用於sha256_password身份驗證 見下的評論AllowPublicKeyRetrieval
ServerSPN,服務器SPN   對於MariaDB auth_gssapi_client身份驗證。指定服務器的服務主體名稱(以驗證是否使用正確的服務器進行身份驗證)。
將Tiny As視為布爾值,TreatTinyAsBoolean 真正 設置為時trueTINYINT(1)值將作為布爾值返回。將此設置為false導致TINYINT(1)以sbyte / byte返回。
使用受影響的行,UseAffectedRows false(默認)時,連接報告找到行而不是已更改(受影響)的行。設置為true僅報告實際更改的行數UPDATEINSERT … ON DUPLICATE KEY UPDATE語句。
使用XA Transactions,UseXaTransactions 真正 何時true(默認),使用TransactionScopeMySqlConnection.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM