Odbc access driver linux

Подключение из Linux или macOS

В этой статье объясняется, как создать подключение к базе данных SQL Server.

Свойства подключения

Ключевые слова и атрибуты строки подключения и имени DSN, поддерживаемые в Linux и macOS, можно найти здесь.

При подключении к базе данных, которая использует зеркальное отображение базы данных (имеет партнера по обеспечению отработки отказа), не указывайте имя базы данных в строке подключения. Вместо этого отправьте команду useимя_базы_данных, чтобы подключиться к базе данных перед выполнением запросов.

Значение, передаваемое в ключевое слово Driver, может быть одним из следующих:

  • именем, использованным при установке драйвера;
  • путем к библиотеке драйвера, которая была указана в INI-файле шаблона, используемого для установки драйвера.

Использовать имена DSN не обязательно. Вы можете использовать имя DSN для определения ключевых слов строки подключения с именем DSN с последующим созданием соответствующей ссылки в строке подключения. Чтобы создать имя DSN, создайте (при необходимости) и измените файл ~/.odbc.ini ( .odbc.ini в домашнем каталоге) для имени DSN пользователя, доступного только для текущего пользователя, или /etc/odbc.ini для системного имени DSN (требуются права администратора). Следующий odbc.ini — это пример, в котором показаны минимальные требуемые записи для имени DSN:

# [DSN name] [MSSQLTest] Driver = ODBC Driver 18 for SQL Server # Server = [protocol:]server[,port] Server = tcp:localhost,1433 Encrypt = yes # # Note: # Port isn't a valid keyword in the odbc.ini file # for the Microsoft ODBC driver on Linux or macOS # 

Чтобы подключиться с помощью приведенного выше имени DSN в строке подключения, следует указать ключевое слово DSN следующим образом: DSN=MSSQLTest;UID=my_username;PWD=my_password .
Строка подключения выше будет эквивалентна строке подключения, определенной без ключевого слова DSN , например: Driver=ODBC Driver 18 for SQL Server;Server=tcp:localhost,1433;Encrypt=yes;UID=my_username;PWD=my_password .

При необходимости можно указать протокол и порт для подключения к серверу. Например, Server = tcp:имя_сервера,12345. Единственный протокол, который поддерживают драйверы Linux и macOS, — tcp .

Читайте также:  Linux live cd build

Чтобы подключиться к именованному экземпляру через статический порт, используйте Server=имя_сервера,номер_порта. Версии, предшествующие 17.4., не поддерживают подключение к динамическому порту.

Кроме того, можно добавить сведения о DSN в файл шаблона и выполнить следующую команду, чтобы добавить его в ~/.odbc.ini :

Полную документацию по INI-файлам и odbcinst см. в документации unixODBC. Сведения о записях в файле odbc.ini , характерных для ODBC Driver for SQL Server и поддерживаемых в Linux и macOS, см. в статье Ключевые слова и атрибуты строки подключения и имени DSN.

Можно проверить, что драйвер работает, используя isql для проверки подключения или следующую команду:

bcp master.INFORMATION_SCHEMA.TABLES out OutFile.dat -S -U -P

Использование TLS/SSL

Для шифрования подключений к SQL Server можно использовать протокол TLS, ранее называемый SSL. TLS защищает имена пользователей и пароли SQL Server по сети. Кроме того, TLS проверяет идентификатор сервера для защиты от атак «злоумышленник в середине».

Включение шифрования повышает безопасность за счет снижения производительности.

Независимо от параметров для Encrypt и TrustServerCertificateучетные данные входа на сервер (имя пользователя и пароль) всегда шифруются. В следующей таблице показано действие параметров Encrypt и TrustServerCertificate.

ODBC Driver 18 и более поздних версий

Параметр шифрования Надежный сертификат сервера Принудительное шифрование на стороне сервера Результат
Нет Нет Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, не шифруются.
Нет Да Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, не шифруются.
Да Нет Нет Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Да Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Нет Нет Да Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Нет Да Да Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Нет Да Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Да Да Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Strict TrustServerCertificate игнорируется. Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Читайте также:  Embedded linux or rtos

Режим Strict доступен только для серверов, поддерживающих подключения по протоколу TDS 8.0.

ODBC Driver 17 и более ранних версий

Параметр шифрования Надежный сертификат сервера Принудительное шифрование на стороне сервера Результат
Нет Нет Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, не шифруются.
Нет Да Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, не шифруются.
Да Нет Нет Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Да Нет Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Нет Нет Да Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Нет Да Да Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Нет Да Сертификат сервера проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.
Да Да Да Сертификат сервера не проверяется.
Данные, передаваемые между клиентом и сервером, шифруются.

Если используется шифрование подключения, имя (или IP-адрес) в общем имени субъекта (CN) или альтернативном имени субъекта (SAN) в TLS/SSL-сертификате SQL Server должно точно совпадать с именем (или IP-адресом) сервера, указанным в строке подключения. Ключевое слово HostnameInCertificate (версия 18.0 и выше) можно использовать для указания альтернативного имени, используемого для сопоставления с именами в TLS/SSL-сертификате. Если это ключевое слово указано, TLS/SSL-сертификат SQL Server должен совпадать с одним из имен сервера или HostnameInCertificate .

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

Driver=;Server=ServerNameHere;Encrypt=YES;TrustServerCertificate=YES 

В строгом режиме шифрования сертификат всегда проверяется. Вместо стандартной проверки сертификата можно использовать ключевое слово ServerCertificate (версия 18.1 и выше) для указания пути к файлу сертификата, который будет сопоставляться с сертификатом SQL Server. Этот параметр доступен только при использовании строгого шифрования. Допустимые форматы сертификатов: PEM, DER и CER. При указании этого ключевого слова проверяется полное соответствие предоставленного сертификата ServerCertificate сертификату SQL Server.

Читайте также:  Работа с gpio linux

Протокол TLS в Linux и macOS использует библиотеку OpenSSL. Следующая таблица содержит минимально поддерживаемые версии OpenSSL, а также расположения хранилища доверия сертификатов по умолчанию для каждой платформы:

Платформа Минимальная версия OpenSSL Расположение хранилища доверия сертификатов по умолчанию
Debian 10, 11 1.1.1 /etc/ssl/certs
Debian 9 1.1.0 /etc/ssl/certs
Debian 8.71 1.0.1 /etc/ssl/certs
OS X 10.11, macOS 1.0.2 /usr/local/etc/openssl/certs
Red Hat Enterprise Linux 9 3.0.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 8 1.1.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 7 1.0.1 /etc/pki/tls/cert.pem
Red Hat Enterprise Linux 6 1.0.0-10 /etc/pki/tls/cert.pem
SUSE Linux Enterprise 15 1.1.0 /etc/ssl/certs
SUSE Linux Enterprise 11, 12 1.0.1 /etc/ssl/certs
Ubuntu 22.04, 22.10 3.0.2 /etc/ssl/certs
Ubuntu 20.04, 21.04, 21.10 1.1.1 /etc/ssl/certs
Ubuntu 18.04 1.1.0 /etc/ssl/certs
Ubuntu 16.04, 16.10, 17.10 1.0.2 /etc/ssl/certs
Ubuntu 14.04 1.0.1 /etc/ssl/certs

Можно также указать шифрование в строке подключения с помощью параметра Encrypt при использовании SQLDriverConnect для подключения.

Настройка параметров поддержания активности TCP

Начиная с ODBC Driver 17.4, можно настроить частоту отправки драйвером пакетов проверки активности и их пересылки, если ответ не получен. Чтобы настроить, добавьте следующие параметры в раздел драйвера в odbcinst.ini или в раздел имени DSN в odbc.ini . При подключении с помощью имени DSN драйвер будет использовать параметры в разделе имени DSN, если они есть. В противном случае или если подключение выполняется только со строкой подключения, драйвер будет использовать параметры из раздела драйвера в odbcinst.ini . Если параметра нет в обоих расположениях, драйвер использует значение по умолчанию. Начиная с версии 17.8 драйвера ODBC в строке подключения можно указать ключевые слова KeepAlive и KeepAliveInterval .

  • KeepAlive= управляет частотой попыток протокола TCP проверить работоспособность неактивного подключения путем отправки пакета keep-alive. Значение по умолчанию — 30 секунд.
  • KeepAliveInterval= определяет интервал, разделяющий повторные передачи пакета keep-alive, пока не происходит получение ответа. Значение по умолчанию составляет 15 секунд.

См. также:

Источник

Оцените статью
Adblock
detector