André Minhorst, Duisburg
MySQL ist ein Open Source-SQL-Server, der wegen seiner Geschwindigkeit und seiner guten Sicherheitseigenschaften oft für Internetanwendungen im Einsatz ist. Da sehr viele Internetprovider MySQL in mittleren bis großen Hosting-Paketen als Datenbankserver anbieten, besitzt es eine Sonderstellung unter den freien SQL-Servern. Das ist ein Grund mehr, die Verwendung von Access als Frontend von Datenbanken unter MySQL unter die Lupe zu nehmen – sowohl mit lokalem MySQL als auch auf dem Internetserver.
Access und MySQL sind grundverschieden. Während sich Access eher für Einzelplatzanwendungen und für Datenbankanwendungen in Mehrbenutzerumgebungen mit begrenzter Datenmenge und Benutzeranzahl eignet, ist MySQL für den Einsatz in Internetanwendungen und anderen Anwendungen in Mehrbenutzerumgebungen vorgesehen. Dieser Vergleich deutet auch den zweiten großen Unterschied an: Access ist ein All-In-One-Paket mit eigener Benutzeroberfläche, während MySQL – für Internetanwendungen genau ausreichend – als reiner Datenbankserver daherkommt.
Kombinieren Sie beide miteinander, erhalten Sie eine Datenbankanwendung mit einem sicheren und performanten Backend und einer je nach Anforderung gestalteten Benutzeroberfläche. Die Verbindung stellen Sie einfach her, indem Sie die Access-Benutzeroberfläche via ODBC mit der MySQL-Datenbank verknüpften. Wie sich später zeigen wird, sind die beiden aber nicht in allen Aspekten wie füreinander geschaffen – der Export eines bestehenden Datenmodells nach MySQL ist unter Umständen mühselig, weil keine Informationen über Indexfelder oder Beziehungen übernommen werden oder die Datentypen nicht kompatibel sind, die lasche Handhabung von Tabellen- und Feldnamen unter Access kann beim Export zu Schwierigkeiten führen, weil MySQL dort wesentlich restriktiver ist und beispielsweise keine Sonderzeichen wie Minus- oder Leerzeichen erlaubt.
Wesentlich interessanter ist aber ohnehin der Anwendungsfall, dass eine MySQL-Datenbank als Datenquelle für eine Internetanwendung oder ähnliches dient. Aufgrund der gegenüber Windows-Anwendungen wesentlich aufwändiger zu entwickelnden Internet-Anwendungen sind Administrationstools meist Mangelware oder nur rudimentär vorhanden, eventuell notwendige änderungen werden dann unter Umständen per Kommandozeile durchgeführt. Was liegt da näher, als schnell eine Access-Anwendung mit den gewünschten Tabellen zu verknüpfen und die benötigten Formulare zum Bearbeiten und Berichte zur Ausgabe der Daten zu erstellen Die gleiche Aufgabe per Web-Interface zu lösen, dürfte ein Vielfaches an Arbeit bedeuten.
Hier stellt sich die Frage, wie Sie eine sichere Verbindung zwischen dem lokalen Access-Frontend und dem beispielsweise auf einem Internetserver befindlichen MySQL-Backend herstellen.
Die Antwort finden Sie gegen Ende dieses Beitrags und vorher erfahren Sie, wie Sie MySQL und MyODBC installieren, wie Sie MySQL zum Laufen bringen, was dabei zu beachten ist und wie Sie eine lokale Verbindung zwischen einer Access- und einer MySQL-Datenbank herstellen. Bleibt das Thema Upsizing: Aufgrund der vielen Fallstricke lässt es sich kaum in diesem Rahmen abhaken, aber wir bringen Sie zumindest auf den richtigen Weg.
Für den Betrieb von MySQL als Backend für Access ist neben MySQL selbst ein entsprechender ODBC-Treiber erforderlich.
Installation von MySQL
Die Installationsdateien von MySQL finden Sie unter folgender Adresse im Bereich Download: http://www.mysql.org
Hinweis
Die im Rahmen der nachfolgenden Beispiele verwendete Version lautet 4.0.21.
Der Start der Installation erfolgt über den Aufruf der Datei Setup.exe. Die in den einzelnen Installationsschritten angebotenen Optionen können Sie problemlos übernehmen. Nach der Installation zeigt sich das System äußerlich unverändert, MySQL legt keine Einträge im Startmenü oder auf dem Desktop an. Das ist auch kein Wunder, denn es handelt sich bei MySQL um ein reines Datenbank-Backend, das meist als SQL-Server für Internetanwendungen dient.
Installation von MyODBC
Der ODBC-Treiber für MySQL heißt treffenderweise MyODBC. Sie finden ihn unter der gleichen Internetadresse wie MySQL im Bereich Download unter Connectors. Der Beitrag basiert auf der Version 3.51.9 des ODBC-Treibers für MySQL. Die Setup-Routine kopiert lediglich vier Dateien auf den Zielrechner und registriert eine von ihnen als .dll-Datei.
Die Installationsroutine hat alle Dateien in ein Verzeichnis namens c:\mysql installiert (soweit Sie kein anderes Verzeichnis angegeben haben). Im Unterverzeichnis bin befinden sich alle wichtigen ausführbaren Dateien von MySQL, darunter auch ein grafisches Administrationstool – dazu später mehr. Im Rahmen der vorgesehenen Anwendung sollten Sie außerdem wissen, dass das Unterverzeichnis data alle MySQL-Datenbanken enthält.
Für Informationen über MySQL, die über die in diesem Beitrag enthaltenen hinausgehen, bietet sich die Lektüre des im Verzeichnis Docs enthaltenen Benutzerhandbuchs von MySQL an.
MySQL starten
Unter Linux-Anwendern gang und gäbe ist die Verwendung der Kommandozeile für alle möglichen Aufgaben, unter anderem auch für die Administration von MySQL. Als verwöhnter Access-Anwender fiele eine Umstellung vermutlich schwer, aber wie bei vielen anderen Anwendungen bieten Kommandozeile und Konfigurationsdateien eine Menge mehr Kontrolle und übersicht als die unter Windows teilweise tief verschachtelten Dialoge – ganz davon abgesehen, dass deren Aufbau sich gerne mal mit Veröffentlichung einer neuen Windows- oder Office-Version ändert. Dennoch erfolgen die ersten Schritte mit MySQL mit der Kommandozeile. Dort wechseln Sie zunächst in das bin-Verzeichnis:
cd \mysql\bin
Starten Sie dann MySQL mit der gleichnamigen Anweisung:
mysql
Normalerweise ist MySQL noch nicht gestartet, was in folgender Meldung resultiert:
ERROR 2003: Can''t connect to MySQL server on ''localhost'' (10061)
MySQL als Systemdienst
Wenn Sie MySQL als Systemdienst installieren, können Sie es wie andere Systemdienste starten, stoppen und festlegen, ob es beim Systemstart automatisch mitgestartet werden soll. Die Installation als Systemdienst erfolgt über folgende Anweisung aus dem bin-Verzeichnis des MySQL-Ordners heraus:
mysqld-nt -install
Bild 1: MySQL als Systemdienst
Anschließend können Sie den MySQL-Server entweder über den Dienst-Dialog (siehe Bild 1) oder per Kommandozeile starten und stoppen.
NET START mysql NET STOP mysql
MySQL-Anweisungen
Sobald MySQL läuft, können Sie das Kommandozeilentool mysql in der Eingabeaufforderung starten.
Sie melden sich dann automatisch als Benutzer mit dem Benutzernamen ODBC an und haben dann – im frisch installierten Zustand – lediglich Zugriff auf die Datenbank test. Wenn Sie sich im Kontext eines anderen Benutzers anmelden möchten, verwenden Sie beispielsweise folgenden Aufruf:
mysql -user root
MySQL begrüßt Sie wie in Bild 2 und bietet seine eigene Eingabeaufforderung mysql> an.
Praxis-Tipp
Mit der Anweisung status erfahren Sie unter anderem, unter welchem Benutzernamen die aktuelle Session läuft.
Bild 2: Anmelden an MySQL und Anzeigen der vorhandenen Datenbanken
Als Benutzer root können Sie direkt einmal einen Blick auf die vorhandenen Datenbanken werfen. Die folgende Anweisung bewirkt die Ausgabe einer Liste wie in Bild 2.
show databases;
Um die Tabellen einer der Datenbanken anzuzeigen, wechseln Sie zunächst zu dieser:
use mysql
Anschließend zeigen Sie mit folgender Anweisung eine Liste der Tabellen dieser Datenbank an (siehe Bild 3):
show tables;
Bild 3: Anzeige der Tabellen einer Datenbank
Bild 4: Der Windows-MySQL-Administrator
An dieser Stelle können Sie mit dem Kommandozeilentool MySQL alles mit einer Datenbank machen, was Sie unter Access mit der Benutzeroberfläche erledigen würden: Datenbanken erstellen, Tabellen erstellen und löschen, den Entwurf der Tabellen bearbeiten und mit entsprechenden Auswahl- und Aktionsabfragen Daten ausgeben und bearbeiten.
Die dazu erforderlichen Anweisungen entsprechen weitgehend denen, die Sie auch unter Access verwenden, daher gehen wir an dieser Stelle nicht weiter darauf ein. Zu beachten ist eigentlich nur, dass Sie die Anweisungen in mehreren Zeilen eingeben können und MySQL diese erst beim Auftauchen eines Semikolons abarbeitet.
Nur einige Anweisungen, die entweder gar keine oder nur wenige Parameter erwarten, werden direkt ausgeführt – wie beispielsweise die Anweisung exit, mit der Sie eine Session beenden.
Sicherheit
Sicherheit wird unter MySQL groß geschrieben. Da MySQL im Gegensatz zu Microsoft Access auch hauptsächlich für den Mehrbenutzerbetrieb und für den Einsatz im Internet gedacht ist, ist das nicht weiter verwunderlich.
An dieser Stelle erfahren Sie nun, wie Sie Benutzer auf eine Datenbank zugreifen lassen oder auch nicht; für weitere Informationen verweisen wir auf die Dokumentation von MySQL.
Hinweis
Eine detaillierte Dokumentation von MySQL finden Sie unter http://dev.mysql.com/doc/mysql/de/index.html (in einer Zeile).
Um das öffnen von Datenbanken unter dem Benutzernamen root und ohne Kennwort zu verhindern, setzen Sie ein solches. Dazu verwenden Sie die Anwendung mysqladmin (ohne Zeilenumbruch).
mysqladmin -u root -h localhost password <Kennwort>
Bei einer Anmeldung unter dem Benutzernamen root fragt MySQL nun das Kennwort ab.
Das Administrations-Tool
Unter dem Dateinamen WinMySQLAdmin.exe finden Sie im Verzeichnis bin das Administrationstool von MySQL. Damit können Sie beispielsweise Datenbanken, Tabellen und Tabellendetails einsehen (siehe Bild 4).
Die Verwendung von Access als Frontend einer MySQL-Datenbank setzt das Vorhandensein einer entsprechenden MySQL-Datenbank voraus. Sollte diese Voraussetzung nicht gegeben sein, erfahren Sie im Abschnitt 4.1, wie Sie eine bestehende Access-Datenbank nach MySQL upsizen. Anderenfalls fahren Sie mit Abschnitt 4.2 fort, wo Sie erfahren, wie Sie ein Access-Frontend mit Tabellen einer MySQL-Datenbank verknüpfen.
Upsizing von Access-Datenbanken auf MySQL
Das Upsizing einer Datenbank von Access auf MySQL kann, um direkt auf eventuelle Schwierigkeiten hinzuweisen, alles andere als trivial sein. Unter Upsizing ist in diesem Zusammenhang die Erstellung einer neuen MySQL-Datenbank zu verstehen, der alle Tabellen der für das Upsizing vorgesehenen Datenbank hinzugefügt werden, sodass die Access-Anwendung nicht mehr auf die in der Access-Datenbank gespeicherten, sondern auf die in der neuen MySQL-Datenbank gespeicherten Tabellen zugreift.
Für dieses Vorhaben sind prinzipiell drei Wege denkbar:
Export von Tabellen nach MySQL
show tables;
show columns from artikel;
Das lässt sich auch nicht so einfach nachholen, da MySQL im Vergleich zu Access keine Sonderzeichen – und auch keine Umlaute – in Feldnamen akzeptiert.
Bild 5: Aufbau einer von Access nach MySQL exportierten Tabelle
Hier beginnen die Probleme des Exports, denn eine änderung des Primärindexfeldes wäre zwar realisierbar und auch die Fremdschlüsselfelder der mit dieser Tabelle verknüpften Felder müssten ohnehin noch angepasst werden, aber letzten Endes müssen Sie auch alle in Formularen, Berichten und Modulen der Access-Anwendung vorhandenen Verweise noch anpassen.
Eine Möglichkeit wäre, die Tabellen unter allgemein üblichen Namen wie tblArtikel statt Artikel zu exportieren, die kritischen Feldnamen beim Feintuning durch zulässige Namen zu ersetzen, eine Verknüpfung zu den Tabellen herzustellen und eine Abfrage mit dem eigentlichen Tabellennamen (also etwa Artikel) zu erstellen, die alle Felder der verknüpften Tabelle (also tblArtikel) enthält. Da Access Tabellen und Abfragen gleichberechtigt behandelt, funktioniert diese Vorgehensweise.
Diese Probleme einmal außen vor gelassen, bietet MySQL alle sprachlichen Möglichkeiten, die entsprechenden Felder in Primärindexfelder umzuwandeln.
Hinweis
Wenn Sie eine bestehende Datenbank nach MySQL exportieren und die Tabellen dieser Datenbank inklusive Primärschlüsseln, Indizes, Fremdschlüsselfeldern und so weiter so anpassen wollen, dass Sie die Access-Anwendung so mit dem neuen, in MySQL vorhandenen Backend verknüpfen können, ist eine Menge Feintuning erforderlich. Eine komplette Beschreibung dieser Schritte wäre zu umfangreich für diesen Beitrag, sodass wir Sie auf die deutsche Dokumentation der entsprechenden Anweisungen unter folgendem Link verweisen möchten: http://dev.mysql.com/doc/mysql/de/Reference.html
Verwenden von MySQL-Datenbanken mit Access
Die Erstellung einer Datenbank unter Access und der anschließende Export nach MySQL zeugt in den meisten Fällen davon, dass dies nicht geplant war. Der Weg, zunächst eine MySQL-Datenbank etwa für eine Internetanwendung zu erstellen und anschließend Access als komfortables Frontend zu verwenden, ist wesentlich sinnvoller.
Aber auch hierbei sind einige Punkte zu beachten:
Die Herstellung einer Verbindung zwischen Access und einer MySQL-Datenbank erfordert eine ODBC-Verbindung, die Sie mit MyODBC realisieren. Die nachfolgenden Beispiele gehen davon aus, dass Sie den MySQL-Server auf dem lokalen oder einem per Netzwerk verfügbaren Rechner installiert und zum Laufen gebracht haben und dass dort die zu verknüpfende Datenbank bereits vorhanden ist.
Mit den folgenden Schritten erstellen Sie eine Verknüpfung zu einer Tabelle einer MySQL-Datenbank:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo