MySQL mit unixODBC unter Ubuntu 14.04 einrichten

Es existieren jede Menge Tutorials, in denen beschrieben wird, wie man ODBC mit MySQL unter Linux zum Laufen bekommt. Leider sind die meisten davon nicht als Tutorial konzipiert und die darin beschriebenen Lösungen arbeiten oft weder zuverlässig noch stabil.

Die folgende Variante wurde auf einem Ubuntu-14.04-Server (MySQL 5.5.37, Apache 2.4.7, PHP 5.5.9, unixODBC 2.2.14) getestet und läuft bisher stabil.

Stellen Sie sicher, dass Sie Root-Rechte auf Ihrem System besitzen, entweder indem Sie sich als Root-User anmelden:

su root

oder indem Sie das „sudo“-Präfix vor jedem Befehl auf der Konsole notieren:

sudo ls
sudo vi
...

Installieren und konfigurieren Sie MySQL:

apt-get install mysql-server mysql-client

Installieren Sie die ODBC-Treiber:

apt-get install libmyodbc unixodbc-bin

Ermitteln Sie das Verzeichnis, in dem die ODBC-Treiber abgelegt sind:

find / -name 'lib*odbc*.so'

OUTPUT (BEISPIEL):
/usr/lib/i386-linux-gnu/odbc/libodbcnnS.so
/usr/lib/i386-linux-gnu/odbc/libodbctxtS.so
/usr/lib/i386-linux-gnu/odbc/libodbcdrvcfg1S.so
/usr/lib/i386-linux-gnu/odbc/libodbcmyS.so
/usr/lib/i386-linux-gnu/odbc/liboraodbcS.so
/usr/lib/i386-linux-gnu/odbc/libodbcpsqlS.so
/usr/lib/i386-linux-gnu/odbc/liboplodbcS.so
/usr/lib/i386-linux-gnu/odbc/libodbcminiS.so
/usr/lib/i386-linux-gnu/odbc/libmyodbc.so
/usr/lib/i386-linux-gnu/odbc/libodbcdrvcfg2S.so

Erstellen Sie Ihre eigene ODBC-Installationsdatei:

vi /etc/odbcinst.ini

Fügen Sie dies in Ihre odbcinst.ini ein:

[myodbc_mysql]
Description = ODBC for MySQL
Driver      = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so
Setup       = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so
UsageCount  = 1

Ermitteln Sie das MySQL-Socket-Verzeichnis:

mysqladmin -u root -p version

AUSGABE (BEISPIEL):
Server version 5.5.37-0ubuntu0.14.04.1
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /var/run/mysqld/mysqld.sock
Uptime: 7 hours 14 min 15 sec

Erstellen Sie Ihre ODBC-Konfigurationsdatei:

vi /etc/odbc.ini

Fügen Sie dies in Ihre odbc.ini ein:

[myodbc_mysql_dsn]                        # Ihr System-DSN
Description = description of your DSN
Driver      = myodbc_mysql                # benutzerdef. Treibername
Server      = localhost                   # oder ggf. externe IP
Port        = 3306                        # oder ggf. benutzeref. Port
Socket      = /var/run/mysqld/mysqld.sock # Socket, siehe oben
Database    = mysqldb1                    # MySQL DB-Name oder leer
Option      = 3
ReadOnly    = No

Installieren Sie den ODBC-Treiber:

odbcinst -i -d -f /etc/odbcinst.ini

Installieren Sie Ihren System-DSN:

odbcinst -i -s -l -f /etc/odbc.ini

Testen Sie, ob Ihr System-DSN erfolgreich installiert wurde:

odbcinst -s -q

AUSGABE (BEISPIEL):
[myodbc_mysql_dsn]

Testen Sie, ob Sie per ODBC eine Verbindung mit Ihrer MySQL-Datenbank herstellen können:

isql -v myodbc_mysql_dsn MYSQLUSER MYSQLUSERPASSWORD

AUSGABE (BEISPIEL):
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

7 Gedanken zu „MySQL mit unixODBC unter Ubuntu 14.04 einrichten

  1. mrgreen

    Ganz starke Seite! Super detailliert und toll erklärt. Ganz ohne zu übertreiben; Da kann die offizielle Dokumentation von MySQL nicht mithalten!

    Antworten
  2. Hans

    Hallo,
    endlich mal eine Anleitung, die genau beschreibt, warum man genau das tun soll, was in der feinen Anleitung notiert ist – und das Schönste: Die ODBC-Anbindung (MySQL) funktionierte sofort fehlerfrei. Zwei Nachfragen sind erforderlich, weil meine Erfahrungen zu ODBC hinreichend Null sind.

    [1] Die Bemerkung ‚Installieren Sie DIE ODBC-Treiber: apt-get install libmyodbc unixodbc-bin‘ bezieht sich sicher NICHT speziell auf MySQL? Den Eindruck könnte man gewinnen, weil vorher das DBMS MySQL installiert wurde. Was wird hier installiert?

    [2] Die letzte Frage bezieht sich auf ‚Installieren Sie DEN ODBC-Treiber:
    odbcinst -i -d -f /etc/odbcinst.ini‘.

    Ist die Interpretation richtig, dass in [1] ALLE ODBC-Treiber für das genutzte System installiert werden und in [2] dann ein spezieller Treiber (hier für MySQL)?

    Der Hintergrund meiner Fragen ist folgender: Für die in unserem Online-Buch beschriebene Programmiersprache GAMBAS gibt es für das DBMS FireBird keinen gambas-spezifischen Treiber mehr, da es Lizenzprobleme gibt, weil die Lizenz der Komponente nicht mit der GPL, unter der Gambas lizensiert ist, kompatibel war. Aber man kann problemlos per ODBC Firebird nutzen.

    Gibt es zu dieser Anbindung ODBC FireBird Erfahrungen oder gar eine spezielle Anleitung wie zu MySQL?

    Mit flotten Grüßen

    Honsek

    Antworten
    1. Ingo Hagemann und Oliver Kuna Beitragsautor

      Hallo Hans, schön, dass dir unsere Anleitung gefällt.

      Zu deinen Fragen:

      [1] Im Paket libmyodbc ist der MySQL-ODBC-Treiber enthalten, unixdobc-bin wird zum Konfigurieren desselben unter Unix benötigt.

      [2] odbcinst liest die Konfiguration ein und installiert den MySQL-ODBC-Treiber damit systemweit. Wenn neben MySQL noch weitere ODBC-Treiber installiert und in der Konfigurationsdatei odbcinst.ini beschrieben wären, würde odbcinst diese ebenfalls installieren.

      Zu FireBird können wir dir ad hoc leider keine Tipps geben.

      Antworten
    2. Matthias

      Schließe mich an, tolle Beschreibung.
      Aber eine Frage:
      Also kann man unter Linux mehrere ODBC Verbindungen nebeneinander installieren und nutzen?
      Bisher hatte ich auf dem Server immer das Problem, dass bei Neustart Montag morgen, immer nur die erste ODBC Verbindung da war. Dabei bräuchte ich auf dem Server MySQL und MSSQL. Und wenn ja, kann ich diese in den Scipt’s dann unter verschiedenen Namen ansprechen?

      Antworten
  3. Laura

    Hallo,

    erstmal vielen Dank für diese tolle Anleitung. Ist wirklich verständlich geschrieben. Doch leider bekomme ich es nicht zum Laufen.

    Ich habe ebenfalls Ubuntu 14.04 LTS, aber in 64-Bit. Den abweichenden Pfad habe ich natürlich berücksichtigt. Ansonsten habe ich zum Testen eure kompletten Daten genommen, ausser den Datenbanknamen noch angepasst.

    Wenn ich jetzt isql -v myodbc_mysql_dsn ### ### eingebe kommt als erstes, dass isql nicht gefunden wird und ich apt-get instal unixodbc eingeben soll. Kein Problem.

    Aber jetzt bekomme ich folgende Meldungen:
    [IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
    [ISQL]ERROR: Could not SQLConnect

    Irgendjemand eine Idee oder einen Hinweis. Ich kann leider auch per Google nichts passendes dazu finden.

    Bin über jeden Hinweis dankbar 🙂

    Liebe Grüße
    Laura

    Antworten
  4. Christian

    Nach einem Jahr kann man ruhig mal anworten ^^
    höchstwahrscheinlich musst du bei dem befehl „isql -v myodbc_mysql_dsn ### ### “ das myodbc_mysql_dsn ersetzen in das dir der befehl „odbcinst -s -q“ ausspuckt.

    Meine Frage ist kann ich den odbc connector auf mehrere DB’s zugreifen lassen? kann ich in der odbc.ini mehrere datenbanken angeben? bei mir sagt das system das es nicht geht.
    Grüße Chris

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert