RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Глава 4. Соединения в Connector/NET

Все взаимодействие между приложением .NET и сервером MySQL проходит через объект MySqlConnection, используя классический протокол MySQL. Прежде чем ваше приложение сможет взаимодействовать с сервером, оно должно создать экземпляр, сформировать и открыть объект MySqlConnection.

Используя класс MySqlHelper, объект MySqlConnection создается классом помощника. Аналогично, используя класс MySqlConnectionStringBuilder, чтобы выставить варианты связи как свойства, ваше приложение должно открыть объект MySqlConnection.

В этой главе рассматривается, как соединиться с MySQL, используя объект MySqlConnection.

4.1. Создание строки подключения Connector/NET

Объект MySqlConnection формируется, используя строку подключения. Строка подключения содержит несколько пар ключ/значение, отделенных точками с запятой. В каждой паре ключ/значение к имени выбора и его соответствующему значению присоединяется знак =. Для списка имен выбора, чтобы использовать в строке подключения, посмотрите раздел 4.5.

Следующее это типовая строка подключения:

"server=127.0.0.1;uid=root;pwd=12345;database=test"

В этом примере объект MySqlConnection формируется, чтобы соединиться с сервером MySQL на адресе 127.0.0.1 с именем пользователя root и паролем 12345. База данных по умолчанию для всех запросов будет test.

Использование символа '@' для параметров теперь предпочтительный подход, хотя старый образец использования '?' все еще поддерживается. Чтобы избежать конфликтов, используя символ в сочетании с пользовательскими переменными, посмотрите выбор строки подключения в разделе 4.5. Старый синтаксис строки подключения устарел.

Connector/NET поддерживает несколько моделей связи:

Открытие связи с единственным сервером

После того, как вы создали строку подключения, она может использоваться, чтобы открыть связь с сервером MySQL.

Следующий код используется, чтобы создать объект MySqlConnection, назначить строку подключения и открыть связь.

MySQL Connector/NET может также соединиться с использованием плагина аутентификации Windows, см. раздел 5.3.1.

Можно далее расширить механизм аутентификации, создав собственный плагин идентификации. Посмотрите подробности в разделе 5.3.2.

Пример Visual Basic

Dim conn As New MySql.Data.MySqlClient.MySqlConnection
Dim myConnectionString as String
  myConnectionString = "server=127.0.0.1;" _
                       & "uid=root;" _
                       & "pwd=12345;" _
                       & "database=test"

Try
  conn.ConnectionString = myConnectionString
  conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
  MessageBox.Show(ex.Message)
End Try

Пример на C#

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;
myConnectionString = "server=127.0.0.1;uid=root;" + "pwd=12345;database=test";

try
{
  conn = new MySql.Data.MySqlClient.MySqlConnection();
  conn.ConnectionString = myConnectionString;
  conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
  MessageBox.Show(ex.Message);
}

Можно также передать строку подключения конструктору класса MySqlConnection:

Пример Visual Basic

Dim myConnectionString as String
myConnectionString = "server=127.0.0.1;" _
                     & "uid=root;" _
                     & "pwd=12345;" _
                     & "database=test"

Try
  Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
  conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
  MessageBox.Show(ex.Message)
End Try

Пример на C#

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;

myConnectionString = "server=127.0.0.1;uid=root;" + "pwd=12345;database=test";
try
{
  conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
  conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
  MessageBox.Show(ex.Message);
}

После того, как связь открыта, она может использоваться другими классами Connector/NET, чтобы общаться с сервером MySQL.

Открытие связи для многократных хостов с отказоустойчивостью

Данные, используемые запросами, могут храниться на многих серверах MySQL, чтобы обеспечить высокую доступность. Connector/NET обеспечивает простой способ определить много хостов в строке подключения для случаев, в которых многократные серверы MySQL формируются для репликации и вы не обеспокоены точным сервером, с которым соединяется ваше приложение в наборе. Для примера того, как формировать много хостов посмотрите Using Replication & Load balancing.

Начиная с Connector/NET 8.0.19, связи классического протокола и X-протокола MySQL разрешают использование многократных имен хоста и многократных конечных точек (пар host: port) в строке подключения или схеме URI. Например:

// classic protocol example
"server=10.10.10.10:3306,192.101.10.2:3305,localhost:3306;uid=test;password=xxxx"

// X Protocol example
mysqlx://test:test@[192.1.10.10:3305,127.0.0.1:3306]

Обновленный подход к отказоустойчивости выбирает цель связи сначала приоритетным порядком, если обеспечено, или произвольным порядком, когда никакой приоритет не определяется. Если предпринятая связь с отобранной целью неудачна, Connector/NET выбирает новую цель из списка, пока хосты не кончатся. Если позволено, Connector/NET использует объединение связи, чтобы справиться с неудачными связями (см. раздел 4.3).

Открытие связи, используя единственную область DNS

Чтобы позволить DNS-SRV в вашем проекте .NET Framework, избегите загрузки пакета MySql.Data.dll из галереи NuGet. Пакет опускает некоторые библиотеки, требуемые .NET Framework для этой особенности. Вместо этого загрузите версию MySQL Connector/NET (mysql-connector-net-8.0.19.msi) с https://dev.mysql.com/downloads/connector/net/, затем добавьте v4.5.2\MySql.Data.dll как ссылку в ваш проект. Никакие другие ссылки не требуются, если все пункты остаются в том же самом местоположении.

Проекты .NET Core могут использовать пакет NuGet непосредственно, чтобы активировать опцию DNS-SRV.

Когда многократные экземпляры MySQL, например, кластер, предоставляют ту же самую услугу в вашей установке, можно применить записи DNS Service (SRV), чтобы обеспечить отказоустойчивость, выравнивание нагрузки и службы репликации. Записи DNS SRV устраняют необходимость клиентов опознать каждый возможный хост в строке подключения или для связей, которые будут обработаны дополнительным компонентом программного обеспечения. Они могут также быть обновлены централизованно администраторами, когда серверы добавлены или удалены из конфигурации или когда их имена хоста изменяются. Записи DNS SRV могут использоваться в сочетании с объединением связи, в этом случае связи с хостами, которые больше не находятся в текущем списке SRV, удалены из пула, когда они становятся неработающими. Для получения информации о DNS SRV в MySQL, см. Connecting to the Server Using DNS SRV Records.

Сервисная запись это спецификация данных, управляемых вашей системой доменных имен, которая определяет местоположение (имя хоста и номер порта) серверов для указанных сервисов. Формат записи определяет приоритет, вес, порт и цель обслуживания, как определено в спецификации RFC 2782 (см. https://tools.ietf.org/html/rfc2782). В следующей записи SRV показан пример с четырьмя целями сервера (для (for _mysql._tcp.foo.abc.com.), Connector/NET использует порядок выбора сервера foo2, foo1, foo3 и foo4.

Name                     TTL   Class  Priority Weight Port Target
_mysql._tcp.foo.abc.com. 86400 IN SRV 0        5      3306 foo1.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV 0        10     3306 foo2.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV 10       5      3306 foo3.abc.com
_mysql._tcp.foo.abc.com. 86400 IN SRV 20       5      3306 foo4.abc.com

Чтобы открыть связь, используя записи DNS SRV, добавьте опцию dns-srv к вашей строке подключения. Например:

Пример на C#

var conn = new MySqlConnection("server=_mysql._tcp.foo.abc.com.;dns-srv=true;" +
           "user id=user;password=****;database=test");

Для дополнительных примеров использования и ограничений для классического протокола MySQL и для X-протокола, посмотрите здесь.

4.2. Соединение по TCP/IP через SSH

Туннелирование SSH (или перенаправление портов) позволяет вам создать безопасное соединение между своим компьютером и удаленным компьютером, через которое можно получить доступ к данным MySQL. Тоннели SSH разрешают вам соединяться с базой данных MySQL из-за брандмауэра, когда порт сервера MySQL заблокирован.

Есть несколько соображений для соединения со стандартным TCP/IP по SSH:

  • Ваше приложение (клиент, чтобы установить связь) требует разрешения на сервере SSH.

  • Сервер SSH общается с сервером MySQL незашифрованным или зашифрованным способом, на основе значения, отобранного для опции SslMode (или свойства). Значение выбора по умолчанию может измениться, в зависимости от версии Connector/NET (см. здесь). Экземпляр сервера MySQL не требует дополнительной конфигурации для этого типа связи.

  • Опция ConnectionProtocol должна использовать значение по умолчанию (socket или tcp), чтобы установить связь со стандартным TCP/IP по SSH.

  • Имя сервера SSH и порт формируются, используя опции связи SshHostName и SshPort. Чтобы подтверждать подлинность клиента, просящего связь (определен опцией связи SshUserName), можно использовать одну из следующих стратегий:

    • Только SshUserName и SshPassword.

    • Только SshUserName и SshKeyFile.

      Ваш сервер SSH может потребовать чтобы вы также обеспечивали опцию связи SshPassPhrase, используя файл ключей. Недействительный пароль производит исключение.

    • SshUserName и SshKeyFile (SshPassPhrase) и SshPassword.

      Комбинация имени пользователя + файл ключей (пароль) + пароль может выполнить откат идентификации, когда файл ключей и пароль действительны, но ошибка происходит на сервере. Определенно, первая попытка соединиться использует файл ключей, и если это терпит неудачу, следующая попытка соединиться использует пароль вместо этого. Если файл ключей SSH пустой, но пароль SSH обеспечивается, Connector/NET пытается соединиться с использованием только пароля SSH.

Можно формировать туннелирование SSH при помощи Connector/NET 8.0.17 (или выше) через строки подключения или свойства класса: класс MySqlConnectionStringBuilder для использования с классическим протоколом MySQL или класс MySqlXConnectionStringBuilder для X Protocol. Тоннели SSH к MySQL поддерживаются с .NET Framework 4.5.2, .NET Standard 1.3 (.NET Core 1.1) и .NET Standard 2.2 (.NET Core 2.0).

4.2.1. Шифры SSH в Connector/NET

Эта секция включает одобренные, устаревшие и недействительные наборы шифров SSH, поддерживаемые Connector/NET. Включение шифров и алгоритмов в различные списки может изменяться со временем.

Одобренные шифры SSH

Одобренные шифры SSH и алгоритмы по категориям включают:

  • Шифрование

    • aes128-cbc

    • aes192-cbc

    • aes256-cbc

    • aes128-ctr

    • aes192-ctr

    • aes256-ctr

Устаревшие шифры SSH

Устаревшие шифры SSH и алгоритмы доступны только для наследия и целей совместимости. Эти пункты подвергаются постепенному постепенному сокращению (см. здесь).

Текущий набор устаревших шифров и алгоритмов по категориям:

  • Шифрование

    • 3des-cbc

  • Ключевые обменные алгоритмы

    • diffie-hellman-group14-sha1

    • diffie-hellman-group-exchange-sha1

  • Коды аутентификации сообщения хэширования по ключу

    • hmac-ripemd160

    • hmac-sha1

    • hmac-sha1-96

Недействительные шифры SSH

Следующие шифры SSH и алгоритмы (по категориям) больше не разрешаются:

  • Шифрование

    • arcfour

    • arcfour128

    • arcfour256

    • blowfish-cbc

    • cast128-cbc

  • Ключевые обменные алгоритмы

    • diffie-hellman-group1-sha1

  • Коды аутентификации сообщения хэширования по ключу

    • hmac-md5

    • hmac-md5-96

4.2.2. Примеры связи SSH для классического протокола MySQL

Примеры в этой секции демонстрируют, как установить классические связи протокола MySQL, используя стандартный TCP/IP по SSH:

Основная связь SSH

Этот пример показывает наиболее каноническую форму туннельной связи SSH. Порт MySQL по умолчанию 3306, порт SSH по умолчанию 22, потому что значения не формируются. Кроме того, только пароль обеспечивается, чтобы подтвердить подлинность серверу SSH. В этом примере связь установлена, используя объект MySqlConnectionStringBuilder.

var builder = new MySqlConnectionStringBuilder();
builder.UserID = "myUser";
builder.Password = "test";
builder.Server = "localhost";
builder.SshHostName = "10.0.0.2";
builder.SshUserName = "mySshUser";
builder.SshPassword = "sshtest";
using (var connection = new MySqlConnection(builder.ConnectionString))
{
  connection.Open();
  connection.Close();
}

Соединение SSH с портами

В этом примере туннелирования SSH порты MySQL и SSH формируются, чтобы отвергнуть значения по умолчанию. Только пароль обеспечивается, чтобы подтвердить подлинность серверу SSH. Обратите внимание на то, что связь установлена, используя строку подключения.

using (var connection = new MySqlConnection("uid=myUser;password=test;server=localhost;port=3307;
  sshHostName=10.0.0.2;sshUserName=mySshUser;sshPassword=sshtest;sshPort=23"))
{
  connection.Open();
  connection.Close();
}

Связь SSH с файлом ключей

В дополнение к установке связи с паролем, этот пример также включает файл ключей и пароль. Как и в предыдущем примере, формируются порты MySQL и SSH.

using (var connection = new MySqlConnection("uid=myUser;password=test;server=localhost;port=3307;
  sshHostName=10.0.0.2;sshUserName=mySshUser;sshKeyFile=C:\\keys\\myOpenSshKeyFile.ppk;
  sshPassPhrase=sshTest;sshPort=23"))
{
  connection.Open();
  connection.Close();
}

Связь SSH с отступлением

Этот пример включает файл ключей SSH (без пароля) и пароль SSH. Поскольку файл ключей действителен, и пароль не требуется, связь может отступить к значению пароля SSH, если идентификация с файлом ключей SSH сталкивается с ошибкой на сервере.

var builder = new MySqlConnectionStringBuilder();
builder.UserID = "myUser";
builder.Password = "test";
builder.Server = "localhost";
builder.Port = 3307;
builder.SshHostName = "10.0.0.2";
builder.SshUserName = "mySshUser";
builder.SshKeyFile = @"C:\keys\noPassPhraseOpenSshKeyFile.ppk";
builder.SshPassword = "sshtest";
using (var connection = new MySqlConnection(builder.ConnectionString))
{
  connection.Open();
  connection.Close();
}

4.2.3. Примеры связи SSH для X-протокола

Примеры в этой секции демонстрируют, как установить связи X-протокола, используя стандартный TCP/IP по SSH:

Основная связь SSH

Этот пример формирует связь SSH со значением по умолчанию для порта SSH (22). Однако, потому что связь использует X-протокол, чтобы установить тоннель SSH, порт MySQL по умолчанию (33060) обеспечивается в подобной URI строке подключения.

using (var session = MySQLX.GetSession("mysqlx://myUser:test@localhost:33060?sshHostName=10.0.0.2;
       sshUserName=mySshUser;sshPassword=sshTest"))
{
  session.Close();
}

Связь SSH со способом SSL

Этот пример создает тоннель SSH для анонимного объекта и гарантирует использование SSL, явно отрицая связь, если сервер не поддерживает SSL.

var sessionOptions = {
  UserID = "myUser",
  Password = "test",
  Server = "127.0.0.1",
  Port = 3307,
  SshHostName = "10.0.0.2",
  SshUserName = "mySshUser",
  SshKeyFile = @"C:\keys\myOpenSshKeyFile.ppk",
  SshPassPhrase = "sshtest",
  SslMode = MySqlSslMode.Required
};

using (var session = MySQLX.GetSession(sessionOptions))
{
  session.Close();
}

4.3. Управление пулом связи в Connector/NET

MySQL Connector/NET поддерживает объединение связи для лучшей работы и масштабируемости. Это позволено по умолчанию. Можно выключить его или приспособить его показатели производительности, используя варианты строки подключения Pooling, Connection Reset, Connection Lifetime, Cache Server Properties, Max Pool Size и Min Pool Size. См. раздел 4.1.

Объединение связи работает, сохраняя родную связь с сервером живой, когда клиент избавляется от MySqlConnection. Впоследствии, если открыт новый объект MySqlConnection, он создается из пула связи, вместо того, чтобы создать новую связь. Это улучшает работу.

Рекомендации

Чтобы работать, как разработано, лучше позволять системе объединения связи справиться со всеми связями. Не создавайте глобально доступный экземпляр MySqlConnection, который вручную открываете и закрываете. Это вмешивается в способ, которым объединение работает и может привести к непредсказуемым результатам или даже исключениям.

Один подход, который упрощает работу, должен избежать создавать объект MySqlConnection вручную. Вместо этого используйте перегруженные методы, которые берут строку подключения в качестве аргумента. С этим подходом Connector/NET автоматически создает, открывает, закрывает и разрушает связи, используя систему объединения связи для лучшей работы.

Типовые наборы данных и классы MembershipProvider и RoleProvider используют этот подход. Большинство классов, у которых есть методы, которые берут MySqlConnection как аргумент, также имеют методы, которые берут строку подключения в качестве аргумента. Это включает MySqlDataAdapter.

Вместо создания вручную объекта MySqlCommand, можно использовать статические методы класс MySqlHelper. Эти методы берут строку подключения в качестве аргумента, и они полностью поддерживают объединение связи.

Использование ресурсов

Connector/NET управляет фоновым заданием каждые три минуты и удаляет связи из пула, которые не были использованы больше трех минут. Уборка пула освобождает ресурсы на обеих сторонах клиент-сервера. Это вызвано тем, что на клиентской стороне каждая связь использует сокет, а на серверной стороне каждая связь использует сокет и поток.

Многократные конечные точки. Начиная с Connector/NET 8.0.19, строка подключения может включать многократные конечные точки (server: port) с позволенным объединением связи. Во время выполнения Connector/NET выбирает один из адресов из пула беспорядочно (или приоритетом, когда обеспечен) и пытается соединиться с ним. Если попытка подключения неудачна, Connector/NET выбирает другой адрес, пока набор адресов не будет исчерпан. Неудачные конечные точки повторяются каждые две минуты. Успешные связи организованы механизмом объединения связи.

4.4. Обработка ошибок связи

Поскольку соединение с внешним сервером непредсказуемо, важно добавить обработку ошибок к вашему приложению .NET. Когда есть ошибка при соединении, класс MySqlConnection возвратит объект MySqlException. У этого объекта есть два свойства, которые представляют интерес, когда есть ошибки из-за неправильного обращения:

  • Message: Сообщение, которое описывает текущее исключение.

  • Number: Код ошибки MySQL.

Когда есть ошибки из-за неправильного обращения, можно приспособить ответ на запрос на основе кода ошибки. Два наиболее распространенных кода ошибки следующие:

  • 0: Не могу соединиться с сервером.

  • 1045: Неверное имя пользователя, пароль пользователя или оба параметра.

Следующий пример кода показывает, как управлять ответом на основе фактической ошибки:

Пример Visual Basic

Dim myConnectionString as String
myConnectionString = "server=127.0.0.1;" _
                     & "uid=root;" _
                     & "pwd=12345;" _
                     & "database=test"

Try
  Dim conn As New MySql.Data.MySqlClient.MySqlConnection(myConnectionString)
  conn.Open()
Catch ex As MySql.Data.MySqlClient.MySqlException
  Select Case ex.Number
  Case 0
    MessageBox.Show("Cannot connect to server. Contact administrator")
  Case 1045
    MessageBox.Show("Invalid username/password, please try again")
  End Select
End Try

Пример на C#

MySql.Data.MySqlClient.MySqlConnection conn;
string myConnectionString;

myConnectionString = "server=127.0.0.1;uid=root;" +
                     "pwd=12345;database=test";
try
{
  conn = new MySql.Data.MySqlClient.MySqlConnection(myConnectionString);
  conn.Open();
}
catch (MySql.Data.MySqlClient.MySqlException ex)
{
  switch (ex.Number)
  {
    case 0:
      MessageBox.Show("Cannot connect to server.Contact administrator");
      break;
    case 1045:
      MessageBox.Show("Invalid username/password, please try again");
      break;
  }
}

При использовании многоязычных баз данных необходимо определить набор символов в строке подключения. Если вы не определяете набор символов, по умолчанию он latin1. Можно определить набор символов как часть строки подключения, например:

MySqlConnection myConnection = new MySqlConnection("server=127.0.0.1;uid=root;" +
                                   "pwd=12345;database=test;Charset=latin1");

4.5. Опции связи в Connector/NET 8.0

В этой главе описываются опции связи MySQL Connector/NET 8.0. Протокол, который вы используете, чтобы установить связь с сервером (классический протокол MySQL или X-протокол) определяет, какие варианты необходимо использовать. У вариантов связи есть значение по умолчанию, которое можно перекрыть, определив новое значение в строке подключения (классический протокол MySQL и X-протокол) или в подобной URI строке подключения (X-протокол). Имена опций Connector/NET и синонимы не чувствительны к регистру.

Для инструкций о том, как использовать строки подключения, посмотрите раздел 4.1. Для альтернативных стилей связи посмотрите Connecting to the Server Using URI-Like Strings or Key-Value Pairs.

Следующие разделы перечисляют варианты связи, которые относятся к обоим протоколам, классическому протоколу MySQL и X-протоколу:

Опции протоколов связи

Следующие варианты связи Connector/NET могут использоваться с любым протоколом. Connector/NET 8.0 выставляет варианты в этой секции как свойства в обоих классах MySql.Data.MySqlClient.MySqlConnectionStringBuilder и MySqlX.XDevAPI.MySqlXConnectionStringBuilder.

CertificateFile , Certificate File

Значение по умолчанию: null.

Этот выбор определяет путь к файлу сертификата в формате PKCS #12 (.pfx). Для примера использования посмотрите раздел 6.10.2 .

CertificatePassword, Certificate Password

Значение по умолчанию: null.

Определяет пароль, который используется вместе с сертификатом, определенным, используя CertificateFile. Для примера использования посмотрите раздел 6.10.2 .

CertificateStoreLocation, Certificate Store Location

Значение по умолчанию: null.

Позволяет вам получить доступ к сертификату в личном хранилище вместо того, чтобы использовать комбинацию файла сертификата и пароля. Для примера использования посмотрите раздел 6.10.2 .

CertificateThumbprint, Certificate Thumbprint

Значение по умолчанию: null.

Определяет отпечаток сертификата, чтобы гарантировать правильную идентификацию сертификата в личном хранилище. Для примера использования посмотрите раздел 6.10.2.

CharacterSet, Character Set, CharSet

Определяет набор символов, который должен использоваться, чтобы закодировать все запросы, посланные в сервер. Результаты возвращены в наборе символов данных результата.

ConnectionProtocol, Protocol, Connection Protocol

Значение по умолчанию: socket (или tcp).

Определяет тип связи:

  • socket или tcp для сокетного соединения, используя TCP/IP.

  • pipe для связи именованного канала (не поддержано с X Protocol).

  • unix для сокетного соединения UNIX.

  • memory, чтобы использовать общую память MySQL (не поддержано с X Protocol).

Database, Initial Catalog

Значение по умолчанию: mysql.

Чувствительное к регистру название базы данных, чтобы использовать первоначально.

dns-srv, dnssrv

Значение по умолчанию: false.

Позволяет связи разрешить сервисные (SRV) адреса в записи DNS SRV, которые определяют местоположение (имя хоста и номер порта) серверов для указанных услуг, когда это используется с транспортным протоколом по умолчанию (tcp). Единственный домен DNS может быть отображен к многократным целям (серверам), используя записи адреса SRV. Каждая запись SRV включает имя хоста, порт, приоритет и вес. Поддержка DNS SRV была введена в Connector/NET 8.0.19, чтобы устранить необходимость клиентов опознать каждый возможный хост в строке подключения, с или без объединения связи.

Определять многократные имена хоста, номер порта или сокет Unix, именованный канал или сопряжение с общей памятью (см. опцию ConnectionProtocol) в строке подключения нельзя, когда позволен DNS SRV.

Использование классического протокола 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 Protocol. Опция dns-srv относится к строкам подключения и анонимным объектам. Свойство DnsSrv объявлено в классе MySqlXConnectionStringBuilder. Ошибка поднята, если dns-srv=false и схема URI mysqlx+srv:// объединены, чтобы создать противоречивую конфигурацию связи. Для получения дополнительной информации об использовании элемента схемы mysqlx+srv:// в подобных URI строках подключения, посмотрите Connections Using DNS SRV Records.

// 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 время простоя связи задано в секундах, прежде чем первый пакет послан. Значение 0 указывает, что keepalive не используется. До Connector/NET 6.6.7/6.7.5/6.8.4 это значение было измерено в миллисекундах.

Password, pwd

Пароль для MySQL.

Port

Значение по умолчанию: 3306.

Порт MySQL. Это проигнорировано, если используется сокет Unix.

Server, Host, Data Source, DataSource, Address (устарело), Addr (устарело), Network Address (устарело).

Значение по умолчанию: 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);

Провайдер не пытается синхронизировать записи в базу данных, поэтому осторожней, используя этот выбор. В среде UNIX с Mono это может быть полностью квалифицированным путем к файлу сокета MySQL. С этой конфигурацией сокет UNIX используется вместо сокета TCP/IP. В настоящее время только единственное имя сокета может быть дано, таким образом получение доступ к MySQL в реплицированной среде, используя сокеты UNIX в настоящее время не поддерживается.

SshHostName, Ssh Host Name, Ssh-Host-Name

Значение по умолчанию: null.

Имя или IP-адрес сервера SSH.

SshKeyFile, Ssh Key File, Ssh-Key-File

Значение по умолчанию: null.

Путь и название файла ключей SSH. Файл ключей поддерживает RSA и закрытые ключи DSA в форматах OpenSSH и ssh.com. Если вы обеспечиваете этот файл, связанный пароль может требоваться для идентификации. Когда файл ключей и пароль обеспечиваются, файл ключей используется сначала и затем, если это терпит неудачу, пароль используется в качестве конфигурации отступления. Условия отступления требуют, чтобы файл ключей SSH и пароль SSH были действительны, но попытка подключения потерпела неудачу из-за ошибок на сервере.

SshPassPhrase, Ssh Pass Phrase, Ssh-Pass-Phrase

Значение по умолчанию: null.

Пароль файла ключей SSH.

SshPassword, Ssh Password, Ssh-Password

Значение по умолчанию: null.

Пароль SSH. Когда файл ключей и пароль обеспечиваются, файл ключей применен сначала и затем, если это терпит неудачу, пароль используется в качестве конфигурации отступления. Условия отступления требуют, чтобы файл ключей SSH и пароль SSH были действительны, но попытка подключения потерпела неудачу из-за ошибок на сервере.

SshPort, Ssh Port, Ssh-Port

Значение по умолчанию: 22.

Номер порта сервера SSH.

SshUserName, Ssh User Name, Ssh-User-Name

Значение по умолчанию: null.

Имя пользователя SSH, который заверен сервером SSH, используя файл ключей (и пароль, при необходимости), паролем или обоими способами. С действительными параметрами связь устанавливается между клиентским приложением и сервером SSH. Сервер SSH тогда общается с сервером MySQL в незашифрованной или зашифрованной связи, на основе значения опции SslMode.

Опция ConnectionProtocol должна быть установлена в socket или tcp (по умолчанию), чтобы позволить туннелирование SSH.

SslCa, Ssl-Ca

Значение по умолчанию: null.

На основе типа используемых сертификатов этот выбор любой определяет путь к файлу сертификата в формате PKCS #12 (.pfx) или путь к файлу в формате PEM (.pem), который содержит список доверенных центров сертификации SSL (CA).

При применении сертификатов PFX этот выбор нужен когда опция связи SslMode установлена в значение value of Required, VerifyCA или VerifyFull, иначе это проигнорировано.

При применении сертификатов PEM этот выбор нужен когда опция связи SslMode установлена в значение VerifyCA или VerifyFull, иначе это проигнорировано.

Для примеров использования посмотрите раздел 6.10.1.

SslCert, Ssl-Cert

Значение по умолчанию: null.

Название файла сертификата SSL в формате PEM, чтобы использовать для установления зашифрованной связи. Этот выбор принимается только когда VerifyFull установлен для опции SslMode и опция связи SslCa использует сертификат PEM, иначе это проигнорировано. Для примера использования посмотрите раздел 6.10.1.

SslKey, Ssl-Key

Значение по умолчанию: null.

Название файла ключей SSL в формате PEM, чтобы использовать для установления зашифрованной связи. Этот выбор принимается только когда VerifyFull установлен для опции SslMode и SslCa использует сертификат PEM, иначе это проигнорировано. Для примера использования посмотрите раздел 6.10.1.

SslMode, Ssl Mode, Ssl-Mode

Значение по умолчанию: Зависит от версии Connector/NET и протокола. Именованный канал и сопряжения с общей памятью не поддерживаются с X-протоколом.

  • Required для 8.0.8 to 8.0.12 (все протоколы), 8.0.13 и выше (только X Protocol).

  • Preferred для 8.0.13 и выше (только классический протокол MySQL).

У этого выбора есть следующие значения:

  • None не используйте SSL. Серверы Non-SSL требуют, чтобы этот выбор был установлен в None явно для Connector/NET 8.0.8 или выше.

  • 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

Значение по умолчанию: Tlsv1,Tlsv1.1,Tlsv1.2,Tlsv1.3. Решение для отступления указывает, которую версию TLS использовать.

Ограничивает набор версий протокола TLS, чтобы использовать во время рукопожатия TLS, когда клиент-сервер поддерживает обозначенные версии TLS и значение опции SslMode не None. Этот выбор принимает единственную версию или список версий, отделенных запятой, например, tls-version=TLSv1.1, TLSv1.2, TLSv1.3;.

Connector/NET понимает следующие значения

  • TLSv1.3

  • TLSv1.2

  • TLSv1.1

  • TLSv1 TLSv1.0

Об ошибке сообщают, когда значение не входит в список выше. Аналогично, об ошибке сообщают, когда пустой список предоставлен как значение или если все версии в списке не поддерживаются, и никакая попытка подключения не сделана.

UserID, User Id, Username, Uid, User name, User

Значение по умолчанию: null.

Учетная запись MySQL.

Возможности только для классического протокола MySQL

Варианты, связанные с системами, использующими пул связи, появляются вместе в конце списка общих вариантов (см. здесь). Connector/NET 8.0 выставляет варианты в этой секции как свойства в классе MySql.Data.MySqlClient.MySqlConnectionStringBuilder.

Общие опции.

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 может иметь успех. Никакие относительные пути или символьные ссылки, которые ведут за пределы этого пути, не разрешены.

Следующая таблица показывает поведение сочетания опций AllowLoadLocalInfile и AllowLoadLocalInfileInPath.

\
AllowLoadLocalInfile AllowLoadLocalInfileInPath Действие
true Пустая строка или null. Все закачки разрешены.
true Допустимый путь. Все закачки разрешены (путь не ограничен).
false (по умолчанию). Пустая строка или null. Никакие закачки не разрешены.
false (по умолчанию). Допустимый путь. Только закачки от указанного каталога и его подкаталогов разрешены.
AllowPublicKeyRetrieval

Значение по умолчанию: false.

Установка в true сообщает Connector/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-стиля, которое соответствует названиям колонок BLOB, которые не содержат данные в UTF-8. См. раздел 5.14.

BlobAsUTF8IncludePattern

Значение по умолчанию: null.

Регулярное выражение POSIX-стиля, которое соответствует названиям колонок BLOB, содержащих данные в UTF-8, см. раздел 5.14 .

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 для колонок даты или даты и времени, которые имеют недопустимые значения.

DefaultCommandTimeout, Default Command Timeout

Значение по умолчанию: 30.

Устанавливает значение по умолчанию тайм-аута команды. Это не заменяет отдельное значение тайм-аута команды на отдельном объекте команды.

DefaultTableCacheAge, Default Table Cache Age

Значение по умолчанию: 60.

Определяет сколько времени в секундах результат TableDirect должен кэшироваться. Для получения информации об использовании кэширования таблиц посмотрите раздел 5.4 .

ExceptionInterceptors, Exception Interceptors

Список перехватчиков, которые могут перехватывать исключения MySqlException.

FunctionsReturnString, Functions Return String

Значение по умолчанию: false.

Заставляет соединитель возвращать значения binary или varbinary как последовательности, если у них нет имени таблицы в метаданных.

IgnorePrepare, Ignore Prepare

Значение по умолчанию: true.

Значение true предписывает поставщику игнорировать любые вызовы MySqlCommand.Prepare(). Эта возможность предоставляется, чтобы предотвратить проблемы с повреждением запросов, когда используется с подготовленными запросами серверной стороны. При использовании подготовленных запросов на серверной стороне устанавливают эту опцию в false.

Includesecurityasserts, Include security asserts

Значение по умолчанию: false.

Должен быть установлен в true, применяя класс MySQLClientPermissions в частично доверенной среде с библиотекой, установленной в GAC среды хостинга. Посмотрите раздел 5.17.

С 8.0.10 этот выбор поддерживается в .NET Core 2.0.

InteractiveSession, Interactive, Interactive Session

Значение по умолчанию: false.

Если установлено в true, клиент интерактивен. Интерактивный клиент это тот, где установлена серверная переменная variable CLIENT_INTERACTIVE. Если интерактивный клиент установлен, переменная wait_timeout установлена в значение interactive_timeout. Клиент тогда будет иметь тайм-аут после этого периода неактивности. Для получения дополнительной информации посмотрите Server System Variables.

С 8.0.10 этот выбор поддерживается в .NET Core 2.0.

IntegratedSecurity, Integrated Security

Значение по умолчанию: no.

Используйте аутентификацию Windows, соединяясь с сервером. По умолчанию это выключено. Чтобы позволить, определите значение yes. Можно также использовать значение sspi как альтернативу yes. См. раздел 5.3.1.

В настоящее время не поддержано в .NET Core.

Logging

Значение по умолчанию: false.

Когда true, различные сведения произведены для настроенного TraceListeners. См. раздел 5.12.

С 8.0.10 этот выбор поддерживается в .NET Core 2.0.

OldGuids, Old Guids

Значение по умолчанию: false.

Представление бэкенда типа GUID было изменено с BINARY(16) на CHAR(36). Это было сделано, чтобы позволить разработчикам использовать функцию сервера UUID() для наполнения таблиц GUID, UUID() производит 36-символьные строки. Разработчики более старых проектов могут добавить 'Old Guids=true' к строке подключения, чтобы использовать GUID типа данных BINARY(16).

PersistSecurityInfo, Persist Security Info

Значение по умолчанию: false.

Когда установлено в false или no (строго рекомендуется), уязвимая информация безопасности, такая как пароль, не возвращена как часть связи, если связь открыта или когда-либо была в открытом статусе. Сброс строки подключения перезагружает все значения строки подключения, включая пароль. Допустимые значения true, false, yes и no.

PipeName, Pipe Name, Pipe

Значение по умолчанию: mysql.

Когда установлено в название именованного канала, MySqlConnection пытается соединиться с MySQL на этом именованном канале. Это относится только к платформе Windows.

В настоящее время не поддержано в .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, позволяет Connector/NET поддержать квадратные скобки вокруг символов вместо обратных галочек. Это позволяет мастерам Visual Studio применить скобки между [ и ], чтобы работать с Connector/NET. Этот выбор влияет на производительность, так что должен использоваться только при необходимости.

TableCaching, Table Cache, TableCache

Значение по умолчанию: false

Позволяет или отключает кэширование команд TableDirect. Значение true позволяет кэширование в то время, как false его выключает. См. раздел 5.4.

TreatBlobsAsUTF8, Treat BLOBs as UTF8

Значение по умолчанию: false.

Установка в true предписывает столбцам типа BLOB иметь набор символов utf8 с сопоставлением по умолчанию для этого набора символов. Чтобы преобразовать только некоторые ваши колонки BLOB, можно использовать ключевые слова 'BlobAsUTF8IncludePattern' и 'BlobAsUTF8ExcludePattern'. Установите их в образец регулярного выражения, который соответствует именам столбцов, чтобы включать или исключить соответственно.

TreatTinyAsBoolean, Treat Tiny As Boolean

Значение по умолчанию: true

Установка в false предписывает столбцам типа TINYINT(1) рассматриваться как INT. См. Numeric Data Type Syntax для дальнейшего объяснения TINYINT и BOOL.

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.

UseOldSyntax, Old Syntax, OldSyntax, Use Old Syntax

Значение по умолчанию: false.

Этот выбор был удален в Connector/NET 8.0.8. Весь код должен теперь быть написан, используя символ '@' как маркер параметра.

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.

Когда true, объект MySqlConnection оттянут из соответствующего пула или, если необходимо, создается и добавляется к соответствующему пулу. Допустимые значения true, false, yes и no.

Опции только для X Protocol

Варианты связи ниже действительны для связей, установленных с X-протоколом. Connector/NET 8.0 выставляет варианты в этой секции как свойства класса MySqlX.XDevAPI.MySqlXConnectionStringBuilder.

Auth, Authentication, Authentication Mode

Механизм аутентификации, чтобы использовать с X-протоколом. Этот выбор был введен с версии 8.0.9 и имеет следующие значения, которые не являются чувствительными к регистру: MYSQL41, PLAIN и EXTERNAL. Если опция Auth не установлена, механизм выбран в зависимости от типа подключения. PLAIN используется для безопасных соединений (TLS или сокеты Unix), MYSQL41 используется для незашифрованных связей. EXTERNAL используется для методов внешней аутентификации, таких как PAM, идентификаторы для входа в систему Windows, 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.

Сжатие данных для связей X-протокола было добавлено в Connector/NET 8.0.20. Опция Compression принимает следующие значения:

  • preferred, чтобы применять сжатие данных, если сервер поддерживает алгоритмы, выбранные клиентом. Иначе данные посылают и получают без сжатия.

  • required, чтобы гарантировать, что сжатие используется или закончить связь и возвратить сообщение об ошибке.

  • disabled, чтобы выключить сжатие данных.

compression-algorithms, CompressionAlgorithms

С Connector/NET 8.0.22 клиентское приложение может определить порядок, в котором о поддержанных алгоритмах сжатия договариваются с сервером. Значение опции Compression должно быть установлено в to preferred или в required. Неподдержанные алгоритмы проигнорированы.

Этот выбор принимает следующие названия алгоритма и синонимы:

  • lz4_message или lz4.

  • zstd_stream или zstd.

  • deflate_stream или deflate (недопустим для .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" })

См. Connection Compression with X Plugin.

connection-attributes, ConnectionAttributes

Значение по умолчанию: true.

Этот выбор был введен в Connector/NET 8.0.16 для представления ряда признаков, которые будут переданы серверу вместе с параметрами связи по умолчанию. Совокупный размер данных о признаке связи, посланных клиентом, ограничивается значением серверной переменной performance_schema_session_connect_attrs_size . Полный размер блока данных должен быть меньше, чем значение этой серверной переменной. Для получения общей информации о признаках связи посмотрите Performance Schema Connection Attribute Tables.

Значение параметра признаков связи может быть пустым (то же самое как определение true), значением типа Boolean (true или false, чтобы позволить или отключить набор атрибута по умолчанию), список, ноль или больше спецификаторов 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.

SslEnable, Ssl-Enable

Значение по умолчанию: false.

Включает или выключает использование SSL для связей, установленных, используя X-протокол. Значение true установит SslMode = Required, false установит SslMode = None.

Этот выбор был введен в Connector/NET 7.0.5 и удален в Connector/NET 8.0.8 поскольку SSL позволен по умолчанию в надлежащих случаях. Начиная с Connector/NET 8.0.8, чтобы отключить SSL, когда сервер не поддерживает его, необходимо установить значение SslMode = None явно.

4.6. Опции строки подключения в Connector/NET 6.10

В этой главе описываются все опции строки подключения MySQL Connector/NET 6.10. У вариантов связи есть значение по умолчанию, которое можно отвергнуть, определив новое значение в строке подключения. Имена опций Connector/NET и синонимы не чувствительны к регистру.

Для инструкций о том, как использовать строки подключения с Connector/NET, см. раздел 4.1.

Основные опции

Опции Connector/NET 6.10 предназначены для общего использования со строками подключения и относятся ко всем конфигурациям сервера MySQL:

AllowBatch, Allow Batch

Значение по умолчанию: true.

Когда true, многократные SQL-операторы можно послать одним выполнением команды. Отметьте: начиная с MySQL 4.1.1, пакетные запросы должны быть отделены определенным сервером символом разделителя. Запросы, посланные в более ранние версии MySQL, должны быть отделены точкой с запятой (;).

AllowLoadLocalInfile, Allow Load Local Infile

Значение по умолчанию: false.

Отключает (по умолчанию) или позволяет функциональности сервера загрузить данные из локального файла.

AllowUserVariables, Allow User Variables

Значение по умолчанию: false.

Установка в true указывает, что поставщик ожидает пользовательские переменные в SQL. Этот выбор был введен в версии 5.2.2.

AllowZeroDateTime, Allow Zero Datetime

Значение по умолчанию: false.

Если True, MySqlDataReader.GetValue() вернет объект MySqlDateTime для колонок даты или даты и времени, которые имеют недопустимое значение, таких как нулевая дата и время, но объект System.DateTime объект для действительных значений. Если False (настройка по умолчанию), это вернет объект System.DateTime для всех действительных значений и будет брошено исключение для недопустимых.

AutoEnlist, Auto Enlist

Значение по умолчанию: true.

Если AutoEnlist = true, что является значением по умолчанию, связь открывается с использованием TransactionScope. Данные переданы, когда передается область или связь откатывается назад, если TransactionScope не передается. Однако эту функцию считают чувствительной к безопасности и поэтому ее нельзя использовать в среднедоверенной среде.

С 6.10.6 эта опция поддерживается в .NET Core 2.0.

BlobAsUTF8ExcludePattern

Значение по умолчанию: null.

Регулярное выражение POSIX-стиля, которое соответствует названиям колонок BLOB, которые не содержат данные в UTF-8. См. раздел 5.14 .

BlobAsUTF8IncludePattern

Значение по умолчанию: null.

Регулярное выражение POSIX-стиля, которое соответствует названиям колонок BLOB, содержащих данные в UTF-8, см. раздел 5.14 .

CertificateFile, Certificate File

Значение по умолчанию: null.

Этот выбор определяет путь к файлу сертификата в формате PKCS #12 (.pfx). Для примера использования посмотрите раздел 6.10. Этот выбор был введен в версии 6.2.1.

CertificatePassword, Certificate Password

Значение по умолчанию: null.

Определяет пароль, который используется вместе с сертификатом, определенным, используя опцию CertificateFile. См. раздел 6.10. Опция добавлена в версии 6.2.1.

CertificateStoreLocation, Certificate Store Location

Значение по умолчанию: null.

Позволяет вам получить доступ к сертификату в личном хранилище вместо того, чтобы использовать комбинацию файла сертификата и пароля. Для примера использования посмотрите раздел 6.10. Опция добавлена в версии 6.2.1.

CertificateThumbprint, Certificate Thumbprint

Значение по умолчанию: null.

Определяет отпечаток сертификата, чтобы гарантировать правильную идентификацию сертификата в личном хранилище. Для примера использования посмотрите раздел 6.10. Опция добавлена в версии 6.2.1.

CharacterSet, CharSet, Character Set

Определяет набор символов, который должен использоваться, чтобы закодировать все запросы, посланные серверу. Результаты возвращены в наборе символов данных.

CheckParameters, Check Parameters

Значение по умолчанию: true.

Указывает, должны ли параметры сохраненных процедур быть сравнены с сервером.

CommandInterceptors, Command Interceptors

Список перехватчиков, которые могут перехватить операции по команде SQL.

ConnectionProtocol, Protocol, Connection Protocol

Значение по умолчанию: socket или tcp.

Определяет тип связи с сервером, значения могут быть:

  • socket или tcp для сокетного соединения.

  • pipe для связи именованного канала.

  • unix для сокетного соединения UNIX.

  • memory использовать общую память MySQL.

ConnectionTimeout, Connect Timeout, Connection Timeout

Значение по умолчанию: 15.

Отрезок времени (в секундах), чтобы ждать связи с сервером прежде, чем закончить попытку и произвести ошибку.

ConvertZeroDateTime, Convert Zero Datetime

Значение по умолчанию: false.

При true MySqlDataReader.GetValue() и MySqlDataReader.GetDateTime() вернут DateTime.MinValue для колонок даты или даты и времени, которые имеют недопустимое значение.

Database, Initial Catalog

Значение по умолчанию: mysql.

Чувствительное к регистру название базы данных, чтобы использовать первоначально.

DefaultCommandTimeout, Default Command Timeout

Значение по умолчанию: 30.

Устанавливает значение по умолчанию тайм-аута команды. Это не заменяет отдельное значение на отдельном объекте команды. Опция добавлена в версии 5.1.4.

DefaultTableCacheAge, Default Table Cache Age

Значение по умолчанию: 60.

Определяет сколько времени в секундах результат TableDirect должен кэшироваться. См. раздел 5.4. Опция добавлена в версии 6.4.

ExceptionInterceptors, Exception Interceptors

Список перехватчиков, которые могут обработать исключения MySqlException.

FunctionsReturnString, Functions Return String

Значение по умолчанию: false.

Заставляет соединитель возвращать значения binary или varbinary как последовательности, если у них нет имени таблицы в метаданных.

IgnorePrepare, Ignore Prepare

Значение по умолчанию: true.

Если true, приказывает поставщику игнорировать любые вызовы MySqlCommand.Prepare(). Эта возможность предоставляется, чтобы предотвратить проблемы с повреждением запросов, когда используется с подготовленными запросами на стороне сервера. При использовании серверной подготовки запросов установите опцию в false. Введена в версиях 5.0.3 и 1.0.9.

IncludeSecurityAsserts, Include Security Asserts

Значение по умолчанию: false.

Должен быть установлен в true используя класс MySQLClientPermissions в частично доверенной окружающей среде, с библиотекой, установленной в GAC хостинга. Это требование новое для приложений частичного доверия в Connector/NET 6.6.4 и выше, см. раздел 5.17.

С 6.10.6 этот выбор поддерживается в .NET Core 2.0.

IntegratedSecurity, Integrated Security

Значение по умолчанию: no.

Используйте аутентификацию Windows, соединяясь с сервером. По умолчанию это выключено. Чтобы позволить, определите значение yes (можно также использовать sspi как альтернативу yes. См. раздел 5.3.1. Это относится только к платформе Windows и было введено в версии 6.4.4.

Пока не поддерживается в .NET Core.

InteractiveSession, Interactive, Interactive Session

Значение по умолчанию: false.

Если true, клиент интерактивный, то есть серверная переменная CLIENT_INTERACTIVE установлена. Если интерактивный клиент установлен, переменная wait_timeout установлена в значение interactive_timeout. Клиент будет отключен после этого периода бездеятельности. См. Server System Variables.

С 6.10.6 опция поддерживается в .NET Core 2.0.

Keepalive, Keep Alive

Значение по умолчанию: 0.

Для соединений по протоколу TCP время простоя связи в секундах перед отправкой первого пакета keepalive. Значение 0 указывает, что keepalive не используется. До Connector/NET 6.6.7/6.7.5/6.8.4 значение было измерено в миллисекундах.

Logging

Значение по умолчанию: false.

Если true, различные сведения произведены любому настроенному TraceListeners. См. раздел 5.12.

С 6.10.6 поддерживается в .NET Core 2.0.

OldGuids, Old Guids

Значение по умолчанию: false.

Этот выбор был введен в Connector/NET 6.1.1. Представление бэкенда типа GUID было изменено с BINARY(16) на CHAR(36). Это было сделано, чтобы позволить разработчикам использовать функцию сервера UUID() для создания GUID таблиц, UUID() выдает 36-символьную строку. Разработчики более старых прриложений могут добавить 'Old Guids=true' к строке подключения, чтобы использовать GUID типа данных BINARY(16).

Password, pwd

Пароль для MySQL.

PersistSecurityInfo, Persist Security Info

Значение по умолчанию: false.

Когда установлено в false или no (строго рекомендуется), уязвимая информация безопасности, такая как пароль, не возвращена как часть связи, если связь открыта или когда-либо была в открытом статусе Сброс строки подключения перезагружает все значения строки подключения, включая пароль. Признанные значения: true, false, yes и no.

PipeName, Pipe Name, Pipe

Значение по умолчанию: mysql.

Когда установлено в название именованного канала, MySqlConnection пытается соединиться с MySQL на этом именованном канале. Это относится только к платформе Windows.

Не поддерживается в .NET Core.

Port

Значение по умолчанию: 3306.

Порт MySQL для связи. Это проигнорировано, если используется сокет Unix.

ProcedureCacheSize, Procedure Cache Size, Procedure Cache, ProcedureCache

Значение по умолчанию: 25.

Устанавливает размер кэша хранимой процедуры. По умолчанию Connector/NET хранит метаданные (типы данных ввода/вывода) о последних 25 используемых хранимых процедурах. Чтобы отключить кэш хранимой процедуры, установите значение в 0. Этот выбор был введен в версиях 5.0.2 и 1.0.9.

Replication

Значение по умолчанию: false.

Указывает, должна ли эта связь использовать репликацию.

С 6.10.6 опция поддерживается .NET Core 2.0.

RespectBinaryFlags, Respect Binary Flags

Значение по умолчанию: true.

Установка в false означает, что Connector/NET игнорирует двоичные флаги колонки, как установлено сервером. Этот выбор был добавлен в версии 5.1.3.

Server, Host, Data Source, DataSource, Address, Addr, Network Address

Значение по умолчанию: localhost.

Имя или сетевой адрес сервера MySQL, с которым можно соединиться. Многократные хосты могут быть определены как отделенные запятыми. Это может быть полезно, где многократные серверы MySQL формируются для репликации и вы не обеспокоены точным сервером, с которым вы соединяетесь. Никакая попытка не предпринята поставщиком, чтобы синхронизировать запись в базы данных, поэтому требуется осторожность, используя этот выбор. В среде Unix с Mono это может быть полностью квалифицированным путем к файлу сокета MySQL. С этой конфигурацией сокет Unix используется вместо сокета TCP/IP. В настоящее время только единственное название сокета может быть дано, так что доступ к MySQL в реплицированной среде, используя сокеты Unix в настоящее время не поддерживается.

SharedMemoryName, Shared Memory Name

Значение по умолчанию: MYSQL.

Название общей памяти, чтобы использовать для коммуникации, если транспортный протокол установлен в memory. Это относится только к платформе Windows.

Не поддерживается в .NET Core.

SqlServerMode, Sql Server Mode

Значение по умолчанию: false.

Позвольте синтаксис SQL Server. Когда установлено в true, позволяет Connector/NET поддержать квадратные скобки вокруг символов вместо обратных галочек. Это позволяет мастерам Visual Studio использовать символы скобки с [] и работать с Connector/NET. Этот выбор должен использоваться только при необходимости, так как влияет на производительность. Этот выбор был введен в версии 6.3.1.

SslMode, Ssl Mode, Ssl-Mode

Значение по умолчанию: Preferred.

Опция введена в Connector/NET 6.2.1 и имеет следующие значения:

  • None: Не используйте SSL.

  • Preferred: Используйте SSL, если сервер поддерживает его, но позвольте связь во всех случаях.

  • Required: Всегда используйте SSL. Отрицайте связь, если сервер не поддерживает SSL.

  • VerifyCA: Всегда используйте SSL. Проверьте CA, но терпите несоответствие имени.

  • VerifyFull: Всегда используйте SSL. Терпит неудачу, если имя хоста не правильно.

TableCaching, Table Cache, tablecache

Значение по умолчанию: false.

Включает или выключает кэширование команд TableDirect. Значение true включает, а false выключает кэш. См. раздел 5.4.

TreatBlobsAsUTF8, Treat BLOBs as UTF8

Значение по умолчанию: false.

Установка этого значения к true предписывает колонкам BLOB иметь набор символов utf8 с сопоставлением по умолчанию для этого набора символов.

TreatTinyAsBoolean, Treat Tiny As Boolean

Значение по умолчанию: true.

Установка в false предписывает TINYINT(1) рассматриваться как INT. См. Numeric Data Type Syntax для подробностей о TINYINT и BOOL.

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.

UseOldSyntax, Old Syntax, OldSyntax, Use Old Syntax

Значение по умолчанию: false.

Опция устарела в Connector/NET 5.2.2 и удалена в Connector/NET 6.10.2. Весь код теперь должен быть написан, используя символ '@' как маркер параметра.

UsePerformanceMonitor, Use Performance Monitor, UserPerfmon, Perfmon

Значение по умолчанию: false.

Указывает, что счетчики производительности должны быть обновлены во время выполнения.

Пока не поддерживается в .NET Core.

UseProcedureBodies, Use Procedure Bodies, Procedure Bodies

Значение по умолчанию: true.

При установке в true, значение по умолчанию, Connector/NET ожидает, что тело процедуры будет видимым. Это позволяет ему определить типы параметра и их порядок. Установите выбор в false, когда пользователь, соединяющийся с базой данных, не имеет права SELECT для таблицы mysql.proc (хранимые процедуры) или не может просмотреть INFORMATION_SCHEMA.ROUTINES, а затем явно задайте типы всех параметров перед вызовом и добавьте параметры к команде в том же самом порядке, как они появляются в определении процедуры.

Этот выбор устарел в Connector/NET 6.3.7 и удален в Connector/NET 6.10.4, вместо него используйте опцию Check Parameters.

UserID, User Id, Username, Uid, User name, User

Учетная запись MySQL.

UseUsageAdvisor, Use Usage Advisor, Usage Advisor

Значение по умолчанию: false.

Регистрирует неэффективные операции по базе данных.

С 6.10.6 опция поддерживается .NET Core 2.0.

Варианты объединения связи

Следующие варианты связаны с объединением связи в строках подключения. Для получения дополнительной информации об объединении связи, посмотрите здесь.

CacheServerProperties, Cache Server Properties

Значение по умолчанию: false.

Определяет, обновлены ли настройки серверной переменной командой SHOW VARIABLES каждый раз, когда объединенная связь возвращена. Предоставление возможности этого урегулирования ускоряет связи в среде пула связи. Вашему запросу не сообщают ни о каких изменениях переменных конфигурации, сделанных другими связями. Этот выбор был введен в версии 6.3.

ConnectionLifeTime, Connection Lifetime

Значение по умолчанию: 0.

Когда связь возвращена в пул, ее время создания сравнивается с текущим временем, и связь разрушена, если тот отрезок времени (в секундах) превышает значение, определенное Connection Lifetime. Это полезно в сгруппированных конфигурациях, чтобы вызвать выравнивание нагрузки между машинами. Значение 0 заставляет объединенные связи иметь максимальный тайм-аут.

ConnectionReset, Connection Reset

Значение по умолчанию: false.

Если true, состояние связи перезагружается, когда она восстанавливается из пула. Значение по умолчанию false уменьшит нагрузку на сервер, получая связь, но состояние связи не перезагружается.

MaximumPoolsize, Maximum Pool Size, Max Pool Size, MaxPoolSize

Значение по умолчанию: 100.

Максимальное количество связей позволено в пуле. Этот выбор относится к Connector/NET 6.7 и выше.

MinimumPoolSize, Minimum Pool Size, Min Pool Size, MinPoolSize

Значение по умолчанию: 0.

Минимальное количество связей позволено в пуле. Этот выбор относится к Connector/NET 6.7 и выше.

Pooling

Значение по умолчанию: true.

Если true, объект MySqlConnection оттянут из соответствующего пула или, если необходимо, создается и добавляется к соответствующему пулу. Признанные значения true, false, yes и no.

Поиск

 

Найди своих коллег!

Вы можете направить письмо администратору этой странички, Алексею Паутову. mailto:alexey.v.pautov@mail.ru