MySQL mit unixODBC unter Ubuntu 14.04 einrichten

Veröffentlicht am Veröffentlicht in MySQL

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. Ganz starke Seite! Super detailliert und toll erklärt. Ganz ohne zu übertreiben; Da kann die offizielle Dokumentation von MySQL nicht mithalten!

  2. 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

    1. 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.

      1. 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?

  3. 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

  4. 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

Schreibe einen Kommentar

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