Казалось бы, простая задача установить драйвер ODBC для MySQL в Ubuntu 16.04 свелась к нетривиальному процессу. Всё из-за того, что разработчики Ubuntu не справились с задачей обновления драйвера. Установив последнюю версию Ubuntu 16.04 вы, вероятно, уже столкнулись с проблемой поиска драйвера ODBC:

# apt-get install libmyodbc
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libmyodbc is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libmyodbc' has no installation candidate

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

apt-get install libmyodbc

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

Последняя версия MySQL 5.7 в отличие от предыдущих ограничивает символы в библиотеке клиентов libmysqlclient20. Вероятно, в MyODBC используются данные символы, поэтому он не может быть установлен из libmysqlclient-dev.

Вопрос поддержки драйвера MyODBC в Ubuntu остается спорным: каких-либо зависимых от него объектов не имеется, и он является своего рода альтернативой по умолчанию для пакета libreoffice-canzeley-client.

Таким образом, драйвер MyODBC, в котором используются более не совместимые с библиотекой клиентов libmysqlclient функции новой версии MySQL 5.7, пока не поддерживается в Ubuntu 16.04. Как только работа над MySQL 5.7 будет завершена, разработчики Ubuntu, возможно, вернут его. Однако такого может и не произойти.

Если у вас есть необходимость в драйвере MySQL ODBC в UBUNTU 16.04, установить его можно. Для этой цели проделайте следующие шаги:

  1. С сайта MySQL скачиваем драйвер для Ubuntu 15.10 (mysql-connector-odbc-5.3.6-linux-ubuntu15.10-x86-64bit.tar.gz)
  2. Распаковываем: tar -xvf mysql-connector-odbc-5.3.6-linux-ubuntu15.10-x86-64bit.tar.gz
  3. Копируем драйвер в папку для ODBC: sudo cp mymysql-connector-odbc-5.3.6-linux-ubuntu15.10-x86-64bit/lib/libmyodbc5* /usr/lib/x86_64-linux-gnu/odbc/
  4. Инсталлируем mysql-connector-odbc-5.3.6-linux-ubuntu15.10-x86-64bit/bin/myodbc-installer -d -a -n «MySQL» -t «DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so;»

Проверяем, что всё работает:

  1. Создаём DSN: sudo ./bin/myodbc-installer -s -a -c2 -n «test» -t «DRIVER=MySQL;SERVER=127.0.0.1;DATABASE=mysql;UID=root;PWD=123456»
  2. Подключаемся и делаем запрос:
    
    radik@radik-VirtualBox:~$ isql test
    +—————————————+
    | Connected! |
    | |
    | sql-statement |
    | help [tablename] |
    | quit |
    | |
    +—————————————+
    SQL> show tables
    +——————————————————————+
    | Tables_in_mysql |
    +——————————————————————+
    | columns_priv |
    | db |
    | engine_cost |
    | event |
    | func |
    | general_log |
    | gtid_executed |
    | help_category |
    | help_keyword |
    | help_relation |
    | help_topic |
    | innodb_index_stats |
    | innodb_table_stats |
    | ndb_binlog_index |
    | plugin |
    | proc |
    | procs_priv |
    | proxies_priv |
    | server_cost |
    | servers |
    | slave_master_info |
    | slave_relay_log_info |
    | slave_worker_info |
    | slow_log |
    | tables_priv |
    | time_zone |
    | time_zone_leap_second |
    | time_zone_name |
    | time_zone_transition |
    | time_zone_transition_type |
    | user |
    +——————————————————————+
    SQLRowCount returns 31
    31 rows fetched
    
    
  3. В итоге получается следующая конфигурация в файлах:
    radik@radik-VirtualBox:~$ cat /etc/odbc.ini
    [test]
    Driver=MySQL
    SERVER=127.0.0.1
    UID=root
    PWD=123456
    DATABASE=mysql
    PORT=3306
    radik @radik-VirtualBox:~$ cat /etc/odbcinst.ini
    [MySQL]
    Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc5w.so
    UsageCount=1
    

Драйвер ODBC в UBUNTU 16.04 установлен. Теперь ваше программное обеспечение без труда сможет подключиться к базе данных MySQL по протоколу TCP/IP.

Комментарии