Den korrekten MySQL ODBC-Treiber für deinen Linux-Server installieren

Wenn du denkst, du hast alles richtig gemacht, nachdem du einer der halb vollständigen Anleitungen da draußen gefolgt bist, und dann wirst du nach der mühseligen Installation von ein paar ODBC-Treibern doch mit der folgenden Fehlermeldung begrüßt:

[ISQL]ERROR: Could not SQLDriverConnect
[01000][unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmyodbc8w.so' : file not found
[ISQL]ERROR: Could not SQLDriverConnect

Doch tatsächlich existiert die Datei. Die Fehlermeldung ist nur etwas unpräzise und vermutlich hast du die falschen Treiber heruntergeladen. Damit dir das nicht noch mal passiert, hier eine endgültige, hoffentlich vollständige Anleitung zur Installation der MySQL-ODBC Treiber (unter Ubuntu, aber leicht übertragbar auf andere Distributionen):

Die richtige Treiber-Version herunterladen

Zunächst musst du herausbekommen, welche Betriebssystem-Version du nutzt. Das funktioniert mit:

$ lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

Außerdem benötigst du noch deinen Architektur-Typ, also 32- oder 64bit. Wenn LSB diese Info nicht liefert, kannst du folgendes probieren:

$ uname -a
Linux 192.168.10.10 4.4.0-042stab136.1 #1 SMP Wed Feb 27 09:04:24 MSK 2019 x86_64 x86_64 x86_64 GNU/Linux

Mit diesen Informationen ausgestattet, besorgst du dir nun die passenden Treiber-Dateien von https://dev.mysql.com/downloads/connector/odbc/ - ich gehe mal davon aus, dass du die aktuellste MySQL-Version benutzt und deshalb auch die Treiber in der Version 8 benötigst.

Kopiere dir am besten den Download-Link, damit du das Archiv direkt auf dem Server mit wget herunterladen kannst, z.B. so:

$ wget https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.15-linux-ubuntu16.04-x86-64bit.tar.gz

Die Treiber installieren und registrieren

Wenn der Download beendet wurde, entpackst du die Datei mit den folgenden Befehlen und wechselst danach in das soeben entstandene Verzeichnis:

$ gunzip mysql-connector-odbc-8.0.15-linux-ubuntu16.04-x86-64bit.tar.gz
$ tar xvf mysql-connector-odbc-8.0.15-linux-ubuntu16.04-x86-64bit.tar
$ cd mysql-connector-odbc-8.0.15-linux-ubuntu16.04-x86-64bit

Nun kopierst du das Installations-Script - was du vermutlich nicht benötigen wirst - und die Treiber-Dateien in die entsprechenden Ordner:

$ cp bin/* /usr/local/bin
$ cp lib/* /usr/local/lib

Das war es schon fast. Als nächstes musst du die Treiber noch “anmelden”. Mit diesem Befehl bekommst du heraus, wo sich die Einstellungs-Datei für ODBC befindet.

$ odbcinst -j
unixODBC 2.3.6
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Es kann durchaus sein, dass die Datei für die Treiber (/etc/odbcinst.ini) noch nicht existiert, dann legst du sie einfach an und ergänzt die folgenden Zeilen:

$ nano /etc/odbcinst.ini
[MySQL ODBC 8.0 Unicode Driver]
Driver=/usr/local/lib/libmyodbc8w.so
UsageCount = 1
[MySQL ODBC 8.0 ANSI Treiber]
Driver=/usr/local/lib/libmyodbc8a.so
UsageCount = 1

Wie du siehst, steckt dahinter keine Raktentechnologie und in den meisten Fällen dürften diese Grundeinstellungen ausreichen. Du kannst die Datei natürlich noch ausbauen, eine ganze Menge zusätzlicher Parameter festlegen und nicht nur für MySQL nutzen (siehe hier).

Die Funktionalität testen

Zum Abschluss kannst du folgendermaßen prüfen, ob die Einrichtung funktioniert hat. Wie du siehst, referenzierst du die oben registrierten Treiber:

$ isql -v -k "DRIVER={MySQL ODBC 8.0 Unicode Driver};SERVER=192.168.10.99;UID=root;PWD=password"

Sollte der Aufruf mit der folgenden Fehlermeldung quittiert werden, prüfe zunächst, ob die Datei vorhanden ist. Wenn dem so ist, ist es möglich, dass du oben die falschen Architektur oder Version der Treiber ausgewählt hast - auch dann beschwert sich isql, dass die Datei “nicht gefunden werden kann”:

[01000][unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmyodbc8w.so' : file not found
[ISQL]ERROR: Could not SQLDriverConnect

Ansonsten solltest du auf die Konsole von deinem MySQL-Server gelangen, die in etwa so aussieht - und dann hast du alles richtig gemacht:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>