Все взаимодействие между приложением .NET и сервером MySQL проходит
через объект MySqlConnection
, используя
классический протокол MySQL. Прежде чем ваше приложение сможет
взаимодействовать с сервером, оно должно создать экземпляр, сформировать и
открыть объект MySqlConnection
.
Используя класс MySqlHelper
, объект
MySqlConnection
создается классом помощника.
Аналогично, используя класс
MySqlConnectionStringBuilder
, чтобы выставить
варианты связи как свойства, ваше приложение должно открыть объект
MySqlConnection
.
В этой главе рассматривается, как соединиться с MySQL, используя объект
MySqlConnection
.
Объект 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-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-протокола, посмотрите здесь.
Туннелирование 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).
Эта секция включает одобренные, устаревшие и недействительные наборы шифров SSH, поддерживаемые Connector/NET. Включение шифров и алгоритмов в различные списки может изменяться со временем.
Одобренные шифры SSH и алгоритмы по категориям включают:
Шифрование
aes128-cbc
aes192-cbc
aes256-cbc
aes128-ctr
aes192-ctr
aes256-ctr
Устаревшие шифры SSH и алгоритмы доступны только для наследия и целей совместимости. Эти пункты подвергаются постепенному постепенному сокращению (см. здесь).
Текущий набор устаревших шифров и алгоритмов по категориям:
Шифрование
3des-cbc
Ключевые обменные алгоритмы
diffie-hellman-group14-sha1
diffie-hellman-group-exchange-sha1
Коды аутентификации сообщения хэширования по ключу
hmac-ripemd160
hmac-sha1
hmac-sha1-96
Следующие шифры SSH и алгоритмы (по категориям) больше не разрешаются:
Шифрование
arcfour
arcfour128
arcfour256
blowfish-cbc
cast128-cbc
Ключевые обменные алгоритмы
diffie-hellman-group1-sha1
Коды аутентификации сообщения хэширования по ключу
hmac-md5
hmac-md5-96
Примеры в этой секции демонстрируют, как установить классические связи протокола MySQL, используя стандартный TCP/IP по 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 порты 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(); }
В дополнение к установке связи с паролем, этот пример также включает файл ключей и пароль. Как и в предыдущем примере, формируются порты 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 сталкивается с ошибкой на сервере.
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(); }
Примеры в этой секции демонстрируют, как установить связи X-протокола, используя стандартный TCP/IP по 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, явно отрицая связь, если сервер не поддерживает 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(); }
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 выбирает другой адрес, пока набор адресов не будет исчерпан.
Неудачные конечные точки повторяются каждые две минуты.
Успешные связи организованы механизмом объединения связи.
Поскольку соединение с внешним сервером непредсказуемо, важно добавить
обработку ошибок к вашему приложению .NET. Когда есть ошибка при соединении,
класс MySqlConnection
возвратит объект
MySqlException
.
У этого объекта есть два свойства, которые представляют интерес, когда есть
ошибки из-за неправильного обращения:
Message
:
Сообщение, которое описывает текущее исключение.
Number
: Код ошибки MySQL.
Когда есть ошибки из-за неправильного обращения, можно приспособить ответ на запрос на основе кода ошибки. Два наиболее распространенных кода ошибки следующие:
0
: Не могу соединиться с сервером.
1045
: Неверное имя пользователя, пароль
пользователя или оба параметра.
Следующий пример кода показывает, как управлять ответом на основе фактической ошибки:
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
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");
В этой главе описываются опции связи 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.
Варианты, связанные с системами, использующими пул
связи, появляются вместе в конце списка общих вариантов (см.
здесь). 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-протоколом. 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-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
явно.
В этой главе описываются все опции строки подключения 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
.