鏈接選項
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服務器。此選項具備如下值:
|
管道,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 | 指定應從上述設置中指定的證書庫中使用哪一個證書。必須使用此選項指示應將商店中的哪一個證書用於身份驗證。 |
鏈接池選項
默認狀況下啓用鏈接池。這些選項用於配置它。api
名稱 | 默認 | 描述 |
---|---|---|
池 | 真正 | 啓用鏈接池。啓用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 。Local Utc |
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 | 假 |