Установка, настройка и использование ODBC
Open DataBase Connectivity (ODBC) — унифицированный интерфейс доступа к базам данных. Использование ODBC позволяет гибко управлять работой с различными БД из клиентстких приложений.
Цель работы: Сформировать навыки управления различными СУБД через стандартизованный интерфейс. Освоить процедуру установки и настройки ODBC.
Задания
- Создать (если не создана ранее) локальную копию базы данных asoiu. Убедиться, что она доступна для чтения и записи.
- Установить unixODBC и драйверы ODBC для MySQL и PostgreSQL.
- Настроить unixODBC (подключить установленные драйверы и задать их параметры).
- Создать новый пользовательский источник данных (User DSN) asoiulocal для доступа к локальной БД asoiu. Проверить доступность созданного источника (выполнить 2-3 SQL-запроса).
- Подключиться к источнику asoiulocal из сеанса суперпользователя. Пояснить, почему возникли ошибки (если возникли).
- Создать системный источник данных (System DSN) asoiuremote для подключения к серверной БД asoiu (драйвер: MySQL; хост: edu.asoiu; порт: 3306 (по умолчанию); логин: student, пароль: student).
- Подключиться к источнику asoiuremote, выполнить 2-3 SQL-запроса.
- Изменить настройку DSN asoiuremote: драйвер — PostgreSQL; порт — 5432, остальные параметры без изменений. Подключиться и выполнить несколько запросов к БД.
- Проверить возможность подключения к asoiuremote для непривилегированного пользователя.
Установка ODBC
Установка unixODBC в ОС OpenSUSE выполняется типовым способом, быстро и без каких-либо дополнительных действий (нужны привилегии root):
aag@aag:/usr/lib64/unixODBC> sudo zypper install unixODBC
Вместе с менеджером драйверов (пакет unixODBC) будут установлены и несколько драйверов БД, в т.ч. поддерживающих файловые источники данных, протокол NNTP, СУБД miniSQL и ряд других.
Дополнительные драйверы могут быть представлены в используемом дистрибутиве Linux в виде отдельных пакетов. Пусть требуется установить ODBC-драйверы для СУБД MySQL и PostgreSQL. Проверим их наличие в репозитории:
aag:/home/aag/Документы # zypper se odbc Загрузка данных о репозиториях... Чтение установленных пакетов... С | Имя | Заключение | Тип --+---------------------------+-----------------------------------------+------ i | MyODBC-unixODBC | ODBC Interface for Communication with-> | пакет i | iodbc | Менеджер драйверов, совместимых с ODBC | пакет i | iodbc-admin | Administration tools for iODBC | пакет | libcppdb_odbc0 | unixODBC database connector for the c-> | пакет | libgda-3_0-odbc | ODBC Provider for GNU Data Access (GDA) | пакет | libiodbc-devel | Заголовочные файлы и библиотеки, необ-> | пакет i | libiodbc3 | Библиотеки, необходимые для запуска i-> | пакет | libqt4-sql-unixODBC | Плагин unixODBC для Qt 4 | пакет | libqt4-sql-unixODBC-32bit | Плагин unixODBC для Qt 4 | пакет | libtdsodbc0 | FreeTDS ODBC Driver for unixODBC | пакет | mdbtools-odbc | MDB Tools ODBC driver for unixODBC | пакет | perl-DBD-ODBC | Драйвер ODBC для DBI | пакет i | php5-odbc | Модуль расширения PHP5 | пакет i | psqlODBC | ODBC Driver for PostgreSQL | пакет | qt3-unixODBC | A UnixODBC Plug-In for Qt | пакет i | unixODBC | Менеджер ODBC-драйверов с некоторыми -> | пакет i | unixODBC-32bit | Менеджер ODBC-драйверов с некоторыми -> | пакет | unixODBC-devel | Заголовочные файлы и статические библ-> | пакет | unixODBC-devel-32bit | Заголовочные файлы и статические библ-> | пакет i | unixODBC-gui-qt | ODBC Configuration Utility, Data Sou-> | пакет
Интересующие нас драйвера выделены. Выполняем их установку:
aag:~ # zypper in myodbc-unixodbc ... [установка] aag:~ # zypper in psqlODBC ... [установка]
Получить расширенную информацию об установленных пакетах можно, например, такой командой:
aag:~ # zypper if psqlodbc unixodbc mysql-unixodbc
Полный список поддерживаемых систем управления базами данных и драйверов для них можно найти на официальном сайте проекта unixODBC.
Настройка ODBC
В общем случае настройка ODBC сводится к конфигурации менеджера драйверов и созданию источников данных (DSN). Это можно сделать несколькими способами:
- С помощью консольной утилиты odbcinst (
man odbcinst
); - Прямым редактированием файлов *.ini;
- С помощью графической утилиты ODBCConfig (или ее аналогов, зависит от дистрибутива Linux).
Рассмотрим несколько примеров использования первых двух способов для управления настройками unixODBC.
Получение информации о настройках ODBC
Проверить версию и текущую конфигурацию менеджера драйверов можно так (обратите внимание на пути к файлам конфигурации, они могут отличаться в разных дистрибутивах):
aag:~ # odbcinst -j unixODBC 2.2.12 DRIVERS............: /etc/unixODBC/odbcinst.ini SYSTEM DATA SOURCES: /etc/unixODBC/odbc.ini USER DATA SOURCES..: /root/.odbc.ini
Получить список подключенных драйверов (тех, для которых созданы записи в odbcinst.ini):
aag:~ # odbcinst -q -d [mysql] [PSQL]
Получить список подключенных источников данных (DSN):
aag:~ # odbcinst -q -s [myasoiu] [pgasoiu] [test]
Как видно из приведенных примеров, команда odbcinst не очень информативна: она не выводит подробностей конфигурации ODBC, ни в плане настроек драйверов, ни в плане параметров источников данных. Полную информацию об этом можно получить с помощью любого текстового редактора, т.к. файлы odbcinst.ini, odbc.ini (системные источники) и ~/.odbc.ini (пользовательские DSN) являются текстовыми:
aag:~ # cat /etc/unixODBC/odbcinst.ini [mysql] Description = MySQL ODBC Driver Driver64 = /usr/lib64/libmyodbc5.so Setup64 = /usr/lib64/unixODBC/libodbcmyS.so USER = student PASSWORD = UsageCount = 1 [PSQL] Description = PostgreSQL Driver64 = /usr/lib64/psqlodbcw.so UsageCount = 1
ОБРАТИТЕ ВНИМАНИЕ: Сразу после установки unixODBC этот и прочие файлы конфигурации будут пустыми, не содержащими каких либо записей.
Настройка драйверов ODBC
Рассмотрим пример настройки драйвера MySQL (версия 5.1.8-10.2.1 для OpenSUSE 12.2, архитектура x86_64). Это можно сделать следующим образом:
- Создать шаблон файла конфигурации драйвера (имя файла может быть любым).
- С помощью odbcinst включить созданную конфигурацию в настройки менеджера драйверов (odbcinst.ini).
Создаем шаблон:
aag:/etc/unixODBC # touch mysql.tpl
Открываем созданный файл в текстовом редакторе:
aag:/etc/unixODBC # mcedit mysql.tpl
Добавляем параметры конфигурации (символ # — комментарий):
[mysql] # произвольное имя драйвера, используется при создании DSN Description = MySQL ODBC Driver # описание, рекомендуется включать версию #Driver = /usr/lib/unixODBC/libmyodbc.so # путь к 32-битному драйверу #Setup = /usr/lib/unixODBC/libodbcmyS.so # путь к программе настроек (если есть) Driver64 = /usr/lib64/libmyodbc5.so # путь к 64-битному драйверу Setup64 = /usr/lib64/unixODBC/libodbcmyS.so # путь к программе настроек (если есть) # прочие необязательные параметры
Сохраняем файл и закрываем его. Теперь используем odbcinst:
aag:/etc/unixODBC # odbcinst -i -d -f mysql.tpl odbcinst: Driver installed. Usage count increased to 1. Target directory is /etc/unixODBC
Описание аргументов командной строки odbcinst можно посмотреть, если запустить команду без параметров (самостоятельно).
Драйверы ODBC — это динамически подключаемые библиотеки. Такие файлы в MS Windows имеют расширение .dll (Dinamic Link Library), в Linux — .so (Shared Object). Найти нужные файлы драйверов (в примере — MyODBC-unixODBC) и путь к ним можно, в частности, такой командой:
aag:/etc/unixODBC # rpm -ql MyODBC-unixODBC | grep -i so /usr/lib64/libmyodbc5-5.1.8.so /usr/lib64/libmyodbc5.so
Источники данных
Источник данных ODBC (анг. Data Source Name, DSN ) — это именованная конфигурация базы данных, с помощью которой осуществляется подключение к этой БД из клиентского приложения. Спецификация ODBC определяет три типа источников данных:
- Пользовательский (User DSN);
- Системный (System DSN);
- Файловый (File DSN).
Все типы источников создаются по одному принципу, на основе шаблонов, добавляемых с помощью odbcinst. Альтернативный вариант — прямая правка конфигурационных файлов, но разработчики стандарта не рекомендуют использование этого метода.
Пользовательские источники данных
Создание пользовательских источников данных (User DSN) не требуют привилегий администратора. Такие источники доступны только для того пользователя, который их создал. Все настройки этих источников сохраняются в файле .odbc.ini — текстовом dot-файле, раположенном в домашней директории пользователя.
Рассмотрим пример создания пользовательского источника данных для подключения к БД MySQL.
1. Создание файла шаблона:
aag@aag:/usr/lib64/unixODBC> cd ~ aag@aag:~> touch mydsn.tpl # создаем файл шаблона в homedir aag@aag:~> mcedit mydsn.tpl
2. Редактирование созданного шаблона конфигурации. Оно сводится к указанию необходимых параметров и их значений (зависят от используемого драйвера БД, полное описание нужно смотреть в документации к соответствующему драйверу):
# Регистр символов значения не имеет # имя источника [mydsn] DESCRIPTION = MySQL User DSN connecting # используемый драйвер (см. odbcinst.ini) DRIVER = mysql # доменное имя или ip-адрес сервера SERVER = edu.asoiu # имя базы данных DATABASE = asoiu # порт (если не задан, то используется тот, что по умолчанию, см. /etc/services) PORT = 3306 # авторизация USER = student PASSWORD = student
3. Добавление нового источника данных в файл .odbc.ini.
aag@aag:~> odbcinst -i -s -h -f mydsn.tpl
После выполнения этой команды новый источник данных будет добавлен в файл пользовательских настроек и станет доступен для использования. Просмотреть список пользовательских источников можно, например, командой cat:
aag@aag:~> cat .odbc.ini [mydsn] DESCRIPTION = MySQL User DSN connecting DRIVER = mysql SERVER = edu.asoiu DATABASE = asoiu PORT = 3306 USER = student PASSWORD = student
4. Проверить подключение к созданному источнику данных можно с помощью консольной утилиты isql с указанием имени источника в качестве параметра. Если параметры подключения заданы правильно, то isql запустится в интерактивном режиме и будет готова к приему SQL-запросов:
aag@aag:~> isql mydsn +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
Системные источники данных
System DSN — системные источники данных ODBC — доступны для всех зарегистрированных пользователей. Процедура создания таких источников практически идентична той, что применяется для настройки User DSN, за рядом небольших отличий:
- System DSN создаются и управляются администратором;
- Конфигурация сохраняется в рабочей директории unixODBC (или системном каталоге Windows), в файле odbc.ini;
Для добавления нового системного источника данных нужно создать шаблон конфигурации, а затем от имени суперпользователя добавить запись в odbc.ini:
aag@aag:~> odbcinst -i -s -l -f sysdsn.tpl
Файловые источники данных
Этот тип DSN позволяет выполнять SQL-запросы к структурированным текстовым файлам (формат .csv — анг. comma-separated values). Поддержка File DSN очень хорошо реализована в Windows-версии ODBC, а вот в unixODBC драйвер libodbctxtS.so работает не очень устойчиво, поэтому здесь не рассматривается. По большому счету, UNIX-подобные системы представляют множество утилит обработки текста, которые куда лучше подходят для этого, чем ODBC.
Графические утилиты настройки ODBC
Рассмотренная выше консольная утилита odbcinst предназначена, в первую очередь, для использования в скриптах оболочки. Для выполнения настрйки ODBC из GUI можно использовать графические приложения ODBCConfig (рис. 1), DataManager (рис. 2) и подобных. Их использование выходит за рамки этой лабораторной работы и выносится на самостоятельное изучение.
Рис. 1. Окно утилиты ODBCConfig
Рис. 2. Использование DataManager для выполнения SQL-запросов
CC-BY-CA Анатольев А.Г., 26.11.2013