4.1 Создание строки подключения Connector/NET
Объект MySqlConnection настраивается с помощью строки подключения. Строка подключения содержит несколько пар ключ-значение, разделенных точкой с запятой. В каждой паре ключ и соответствующее значение соединены знаком равенства. Список имен параметров для использования в строке подключения см. в разделе 4.5 «Ссылка на параметры подключения Connector/NET».
Ниже приведена примерная строка подключения:
"server=127.0.0.1;uid=root;pwd=12345;database=test"
В этом примере объект MySqlConnection настроен для подключения к серверу MySQL по адресу 127.0.0.1, с именем пользователя root и паролем 12345. По умолчанию база данных для всех запросов будет базой данных test.
Connector/NET поддерживает несколько моделей подключения:
Открытие подключения к одному серверу
После создания строки подключения её можно использовать для открытия подключения к серверу MySQL.
Следующий код используется для создания объекта MySqlConnection, присвоения строки подключения и открытия подключения.
MySQL Connector/NET также может подключаться с использованием встроенного плагина аутентификации Windows. Подробности см. в разделе 4.4 «Аутентификация Connector/NET».
Вы также можете расширить механизм аутентификации, написав свой собственный плагин аутентификации. Подробности см. в разделе 5.8 «Написание пользовательского плагина аутентификации».
Пример на 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);
}
Пример на 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
Вы также можете передать строку подключения в конструктор класса MySqlConnection:
Пример на 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);
}
Пример на 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
После открытия подключения его могут использовать другие классы Connector/NET для взаимодействия с сервером MySQL.
Открытие подключения для нескольких хостов с резервным копированием
Данные, используемые приложениями, могут храниться на нескольких серверах MySQL для обеспечения высокой доступности. Connector/NET предоставляет простой способ указания нескольких хостов в строке подключения в тех случаях, когда несколько серверов MySQL настроены для репликации, и вас не интересует точный сервер, к которому подключается ваше приложение в наборе. Пример настройки нескольких хостов с репликацией см. в Using Replication & Load balancing.
Начиная с Connector/NET 8.0.19, как подключения по классическому протоколу MySQL, так и X Protocol допускают использование нескольких имен хостов и нескольких конечных точек (пара 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.2 «Управление пулом подключений в Connector/NET»).
Открытие подключения с использованием одной DNS-доменной зоны
Когда несколько экземпляров MySQL предоставляют одну и ту же услугу в вашей установке, вы можете применять записи DNS SRV для обеспечения резервного копирования, балансировки нагрузки и репликации. Записи DNS SRV избавляют клиентов от необходимости идентифицировать каждый возможный хост в строке подключения или от обработки подключений дополнительным компонентом программного обеспечения. Их также можно централизованно обновлять администраторами при добавлении или удалении серверов из конфигурации или при изменении их имен хостов. Записи DNS SRV могут использоваться в сочетании с пулом подключений, в этом случае подключения к хостам, которые больше не находятся в текущем списке записей SRV, удаляются из пула при их простаивании. Сведения о поддержке DNS SRV в MySQL см. в .
Запись сервиса — это спецификация данных, управляемых вашей системой доменных имён, которая определяет расположение (имя хоста и номер порта) серверов для указанных служб. Формат записи определяет приоритет, вес, порт и целевой объект для службы, как определено в спецификации RFC 2782 (см. https://tools.ietf.org/html/rfc2782). В следующем примере записи SRV с четырьмя целевыми серверами (для _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 Protocol) см. в разделе «Параметры для обоих протоколов Classic MySQL Protocol и X Protocol».
© 2025 Oracle
Licensed under the GPLv2 License.