ODBC-Zugriff auf eine MySQL-Datenbank
| Andreas Grupp, Elektronikschule Tettnang |
Netzwerk-Konfiguration
Der Zugriff auf ihre Datenbank erfolgt über das TCP/IP-Protokolls des Internet. Ihr Rechner muß demnach mit dem Transportprotokoll TCP/IP ausgerüstet sein.
Verwendete Technik
Der Zugriff kann auf zwei verschieden Arten realisiert werden:
· ODBC (Open Database Connectivity): Dabei handelt es sich um
einen Standard für Datenbankzugriffe, der ursprünglich von Microsoft
stammt. Im Normalfall kann nämlich eine Datenbank-Applikation (in
diesem Beispiel Microsoft Access) nicht auf fremde Datenbank-Formate zugreifen
(von einigen Ausnahmen abgesehen).
Abb. 1: Verbindungsproblematik Frontend zu SQL-Server
Die ODBC-Schnittstelle ist nun eine Möglichkeit dieses Problem zu lösen. Dazu wird die Datenbank, auf die nicht direkt zugegriffen werden kann, hinter einem ODBC-Treiber "versteckt". Der eingesetzte Treiber ist für das jeweilige Datenbankformat maßgeschneidert und somit in der Lage auf die Datenbank zugreifen zu können. Über den ODBC-Treiber-Manager besteht nun die Möglichkeit auf Betriebssystemebene sogenannte ODBC-Datenquellen zu konfigurieren. Dabei bietet der Manager den Windows-Applikationen eine standardisierte Programmschnittstelle an. Die Applikation braucht dadurch keine speziellen Kenntnisse über die tatsächliche Datenbank. Beim Zugriff auf eine spezielle Datenquelle lädt der ODBC-Manager den passenden Treiber nach. Dieser setzt die über diese Schnittstelle eintreffenden Kommandos in das spezifische Format der verwendeten Datenbank um. Die eigentliche Datenbank-Applikation muß nun nur noch in der Lage sein auf ODBC-Datenquellen zugreifen zu können.
Fazit: Im System muß ein auf die jeweilige Datenbank angepasster ODBC-Treiber installiert sein.
Abb. 2: Verbindung des Frontends zum SQL-Server via ODBC
· Die andere Variante ist ein direkter Zugriff mit Hilfe von MySQL-Frontends. Diese sind jedoch hauptsächlich für den UNIX-Bereich verfügbar. Die Tools für den Windows-Bereich sind momentan noch eher dürftig. Sie können sich jedoch jederzeit im Download- bzw. Contribution-Bereich des Datenbankherstellers T.c.X umsehen, ob zwischenzeitlich komfortablere Tools zur Verfügung stehen.
Installation des ODBC-Treibers unter Windows 95, 98, NT
Da insbesondere der ODBC-Zugriff über eine Microsoft-Windows-Oberfläche relevant sein dürfte, anbei eine Erläuterung der einzelnen Schritte für Windows95, 98 und NT (für Windows 2000 dürften die einzelnen Schritte prinzipiell identisch sein, wurden aber nicht getestet).
Die notwendige ODBC-Software können sie wieder von der www.mysql.com
herunterladen (das empfehle ich, da dort meist aktuellere Treiber liegen).
Folgen Sie auf den dortigen Seiten den Links zu MyODBC. Beachten Sie aber,
daß es für Windows95 und WindowsNT zwei verschiedene Varianten
gibt. Besorgen Sie sich die für Ihr Betriebssytem passende Form. Nach
dem Auspacken des ZIP-Archivs (und Lesen der README-Datei) starten Sie
bitte das Setup-Programm. Über den Startbildschirm des MyODBC-Setups
gelangen Sie zur Treiberauswahl.
Abb. 3: Start des MyODBC-Setups
Abb. 4: Auswahl des zu installierenden Treibers
Sie erhalten nun die Möglichkeit den MySQL-ODBC-Treiber zu installieren.
Mit der Schaltfläche OK könnten sie einfach loslegen und ausprobieren,
ob die Installation funktioniert. Insbesondere wenn sie aber schon einen
ODBC-Treiber-Manager installiert haben (z.B. weil sie bei Installation
von Microsoft Access alle Komponenten ausgewählt haben), kommt es
bei der Installation zu Problemen. Die Installationssoftware meldet, dass
sie die MFC30.DLL nicht ersetzen kann. Im Normalfall ist es deshalb immer
erforderlich in die "Advanced ..."-Installationseinstellungen zu gehen.
Hier wählen Sie dann "Do not install Driver Manager" und starten
erst dann die Installation.
Abb. 5: Übliche Einstellung in den erweiterten Installations-Optionen
Die Schaltfläche "OK" der "Advanced Installation Options" führt sie zurück zum Screenshot aus Abbildung 4. Dort können Sie nun wiederum über die "OK"-Schaltfläche den eigentlichen Installationsvorgang starten. Nachdem dieser Vorgang abgeschlossen ist, bietet die Installationssoftware sofort die Konfigurationsmöglichkeit für eine ODBC-Datenquelle (Abb. 6).
Abb. 6: Konfiguration einer ODBC-Datenquelle direkt nach der Treiber-Installation
Dies erledigen wir aber ein paar Mausklicks weiter über die System-
steuerung. Das "Data Sources"-Fenster der Abbildung 6 wird deshalb ohne
jegliche Aktion über die "Close"-Schaltfläche geschlossen.
Abb. 7: Ende des ODBC-Treiber-Setups
Damit ist die Installation des ODBC-Treibers endgültig abgeschlossen.
Konfiguration einer ODBC-Datenquelle unter Microsoft Windows
Der nächste Schritt besteht in der Konfiguration einer ODBC-Datenquelle.
Dies wird auf Systemebene über die Systemsteuerung erreicht. Öffnen
Sie die Systemsteuerung Ihres Rechners
Abb. 8: Der ODBC-Zugang in der Systemsteuerung in der alten
und neuen Version
und starten Sie mit einem Doppelklick auf das "32-Bit-ODBC"-Icon den ODBC-Datenquellen-Administrator.
Abb. 9: Die Oberfläche des ODBC-Datenquellen-Adminstrators
Die Installationsroutine hat Ihnen schon eine Datenquelle installiert
("sample MySQL"), die allerdings auf keine reale Datenbank verweist.
Sie können diese Datenquelle aus Ihrem System entfernen. Über
die Schaltfläche "Hinzufügen" gelangen Sie zum Dialogfenster "Neue Datenquelle erstellen".
Abb. 10: Auswahl des ODBC-Treibers für eine neue Datenquelle
Hier wählen Sie den MySQL-Treiber aus und betätigen anschließend die Schaltfläche "Fertigstellen ". Sie gelangen dann in ein Dialogfenster zur Konfiguration der Datenquelle.
Abb. 11: Konfigurationsfenster eine MySQL-ODBC-Datenquelle
Hier sind die folgenden Parameter einstellbar:
- Windows DSN name: Hier können Sie entsprechend Ihren eigenen Wünschen einen Namen für die Datenquelle vergeben. Unter der gewählten Bezeichnung erreichen Sie später im System (z.B. unter Access) diese Datenquelle.
- Als Server (Datenbank-Server) geben Sie den Namen oder die IP-Nummer Ihres MySQL-Datenbank-Servers an.
- MySQL Database name: Hier handelt es sich um den realen Namen der Datenbank auf dem MySQL-Server.
- User: Hierbei handelt es sich um Ihre Userkennung bei der Anmeldung am Datenbankserver. Beachten Sie, daß es sich hierbei um die MySQL-Userkennung handelt. Da auf Windowsrechner im allgemeinen mehrer Personen Zugriff haben, gibt man hier besser erst mal nichts ein (siehe auch nächster Spiegelstrich).
- Password: Das zur Userkennung paßende Passwort. Geben Sie Ihr Kennwort nie bekannt! Tragen Sie es auch hier nie ein! Sie werden bei Zugriffsversuchen dann vom System nach dem Password gefragt!
- Port: Kann leer bleiben, da der MySQL-Datenbankserver tatsächlich auf Port 3306 läuft.
- Die verschiedenen Frontends (z.B. Access) implementieren verschiedene Versionen des ODBC-Standards oder weisen Implementierungsfehler auf. Je nach Frontend können Sie deshalb noch verschieden Optionen zum Verhalten des MySQL-ODBC-Treibers (MyODBC) einstellen. Lesen Sie hierzu nochmals in der README-Datei des MyODBC-Pakets nach. Für Access 7.0 bis Access 2000 ist z.B. nur die Option "Return matching rows", für Access 2.0 die Optionen "Return matching rows" und "Simulate ODBC 1.0" zu setzen.
Mit einem ODBC-fähigen Frontend können Sie auf die Datenbank zugreifen und Datensätze lesen, schreiben, verändern, sofern Sie auf dem MySQL-Datenbankserver die entsprechenden Rechte haben. Die diversen Frontends können hier nicht umfassend behandelt werden. Lesen Sie notfalls in der zugehörigen Software-Dokumentation nach wie Sie auf ODBC-Datenquellen zugreifen können. Nachfolgend wird nur für Microsoft-Access der Zugriff exemplarisch dargestellt.
Verknüpfung von Microsoft Access mit einer ODBC-Datenquelle
Sie benötigen für die nachfolgenden Schritte eine funktionierende Netzwerk-Verbindung zu ihrem MySQL-Datenbank-Server (außer Sie betreiben den MySQL-Server unter Windows auf dem gleichen Rechner)!
Erstellen Sie sich unter Access eine neue, leere Datenbank. Anschließend
muß eine Verknüpfung zu den Datenbank-Tabellen auf dem MySQL-Datenbank-Server
erstellt werden. Wählen Sie dazu in der Menüleiste "Datei"/"Externe
Daten"/"Tabellen verknüpfen..." aus.
Abb. 12: Verknüpfung externer Datenquellen mit einer Access-Datenbank
Im nun folgenden Auswahldialog wählen Sie als Dateityp "ODBC-Datenbanken()" aus.
Abb. 13: Festlegung von ODBC-Datenquellen während des Verknüpfens
ext. Datenquellen
Nach dieser Auswahl erscheint sofort ein Dialog zur Auswahl der entsprechenden
Datenquelle. Gehen Sie hier zuerst zur zweiten Registerkarte "Computer-Datenquelle".
In der dortigen Liste sollte die von Ihnen konfigurierte ODBC-Datenquelle
erscheinen. Wählen Sie diese aus und beenden Sie den Dialog mit Hilfe
der Schaltfläche "OK".
Abb. 14: Auswahl der für die Verknüpfung zu verwendenden
ODBC-Datenquelle
Ihr System meldet Sie nun am MySQL-Datenbankserver an und baut eine
Verbindung zur konfigurierten Datenbank auf. Nachdem dies erfolgt ist,
erhalten Sie eine Liste der verfügbaren Tabelle(n). Wählen Sie
die Tabelle(n) aus, auf die Sie zugreifen möchten, und verlassen Sie
auch diesen Dialog mit der Schaltfläche "OK".
Abb. 15: Auswahl der zu vernküpfenden Tabellen
Falls in der Tabelle kein Primärschlüssel definiert ist, müssen
Sie noch einen derartigen Primärschlüssel auswählen. Im
nachfolgenden Beispiel wäre das Datenfeld "lfb_nr" auszuwählen.
Abb. 16: Evtl. Festlegung des Primärschlüssels
Nach Verlassen dieses Dialogs haben sie im Access-Datenbank-Fenster
die entsprechende Tabelle zur Verfügung. Sie ist mit dem Icon einer
ODBC-Datenquelle gekennzeichnet.
Abb. 17: Eine externe Tabelle einer ODBC-Datenquelle in Access
Sie haben nun auf die zugehörigen Daten ganz normalen Zugriff wie
auf lokale Tabellen auch. Insofern können Abfragen oder Formularfenster
erstellt werden oder auch einfach mit Hilfe der Datenblattansicht zugegriffen
werden.
Abb. 18: Eine MySQL-Tabelle in der Access-Datenblattansicht
Anlegen einer Tabelle auf einem MySQL-Server via ODBC
Die ODBC-Schnittstelle bietet noch weitere Möglichkeiten. Sie können beispielsweise den Tabellenentwurf einer Datenbank mit der komfortablen grafischen Oberfläche von Microsoft Access durchführen. Anschließend besteht die Möglichkeit diese Tabellen über ODBC auf dem MySQL-Server anlegen zu lassen.
Als erstes legen Sie die Tabellen wie gewohnt lokal unter Access an.
Die zu exportierende Tabelle wird anschließend im Datenbankfenster
ausgewählt und der Exportvorgang über die Menüauswahl "Datei/Exportieren..."
gestartet.
Abb. 19: Start eines Tabellenexports auf den MySQL-Server
Sie erhalten nach Anklicken des Menüeintrags die Dateiauswahlbox des Systems.Wählen Sie dort wie in Abbildung 13 den Datentyp "ODBC-Datenbanken ()" aus. Danach verschwindet die Dateiauswahlbox sofort und Sie erhalten die Möglichkeit den für den Export zu verwendenden Tabellennnamen festzulegen.
Falls der Name bereits den Namenskonventionen des verwendenden SQL-Servers
(hier MySQL) entspricht, ist eine Änderung nicht nötig. Bestätigen
Sie das Fenster dann einfach mit "OK".
Abb. 20: Auswahl des Exportnamens der Tabelle
Unmittelbar nach Betätigung der "OK"-Schaltfläche erscheint
wieder das bereits bekannte Auswahlfenster für ODBC-Datenquellen.
Wählen Sie hier aus, in welche der angelegten Datenquellen die Tabelle
exportiert werden soll, und bestätigen Sie Ihre Auswahl durch "OK".
Abb. 21: Auswahl der für den Export zu verwendenden ODBC-DB
Im Anschluß daran wird die Tabelle auf dem MySQL-Server angelegt und sämtliche Daten exportiert. Läuft der MySQL-Server beispielsweise auf einer Linux-Workstation oder einem Linux-Server, so können Sie mit den dort verfügbaren Datenbankfrontends auf die Daten zugreifen.
Abb. 22: Zugriff auf MySQL-Datenbank mit KMySql unter Linux
Leider werden beim ODBC-Export nicht immer alle Einstellungen der lokalen Tabellen mitexportiert. Insbesondere das Anlegen des Primärschlüssels wird zumindest beim Export auf einen MySQL-Server nicht durchgeführt. Hier ist dann entsprechende Nacharbeit auf dem MySQL-Datenbankserver erforderlich.
Eventuell notwendige Service-Packs und Updates zu Access2000
Access2000 benötigt zur Zusammenarbeit mit SQL-Servern diverse Service-Packs bzw. Updates. Es gibt nämlich insbesondere beim Exportieren von Tabellen via ODBC ein Problem mit dem erzeugten CREATE TABLE Befehl, da leider die Namen der Datenfelder vergessen wurden (siehe hierzu Support-Beitrag von Microsoft. Um das Problem zu lösen installieren Sie zuerst die MDAC's Version 2.6 (beachten Sie aber insbesondere bei der Verwendung von geclusterten Server zuerst die Hinweise auf dem Microsoft-Server). Anschließend installieren Sie den Service-Pack 5 der Database Jet Engine in der richtigen Version (abhängig vom Betriebssystem).
