MySqlConnector鏈接選項


https://mysqlconnector.net/connection-options/html

鏈接選項

MySqlConnector支持大多數Oracle的Connector / NET鏈接選項mysql

還有一些只能由MySqlConnector支持一些獨特的選項,用於替換MySql.Data修正錯誤,增長了新的功能,並提升了數據庫的訪問性能。當即安裝sql

基本選項

這些是須要定義以鏈接到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   指定應從上述設置中指定的證書庫中使用哪一個證書。必須使用此選項指示應將商店中的哪一個證書用於身份驗證。

鏈接池選項

默認狀況下啓用鏈接池。這些選項用於配置它。api

名稱 默認 描述
真正 啓用鏈接池。啓用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
相關文章
相關標籤/搜索