Access und MySQL

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:

  • Alle betroffenen Tabellen werden per Exportieren…-Funktion in die Zieldatenbank exportiert.
  • Die Definition und die Inhalte der Tabellen werden in ein Skript exportiert, das MySQL per SQL-Dump in die gewünschte SQL-Datenbank importiert.
  • Sie verwenden ein Tool, das Ihnen die Arbeit mehr oder weniger abnimmt.
  • Aus Platzgründen können wir leider nicht alle drei Möglichkeiten vorstellen. Die erste der drei scheint aber zunächst am einfachsten zu sein; außerdem bietet sie Gelegenheit, sich ein wenig in den Sprachumfang von SQL unter MySQL einzuarbeiten. Sie beinhaltet allerdings ein wenig Handarbeit. Wenn Sie beispielsweise die Tabellen der Nordwind-Datenbank inklusive Beziehungen, Indizes und Daten exportieren möchten, sind einige Nacharbeiten notwendig.
  • Export von Tabellen nach MySQL

  • Für diesen Ansatz erstellen Sie zunächst eine neue Datenbank in MySQL. Dazu gehen Sie folgendermaßen vor:
  • Starten Sie die Eingabeaufforderung und wechseln Sie in das Verzeichnis c:\mysql\bin (soweit Sie MySQL nicht in einem anderen Verzeichnis installiert haben).
  • Melden Sie sich mit der Anweisung mysql -u root -p<Kennwort> mysql beim MySQL-Server an (Achtung: kein Leerzeichen zwischen -p und <Kennwort>) und geben Sie das Kennwort an, soweit erforderlich.
  • Erstellen Sie mit der Anweisung create database Nordwind eine neue Datenbank namens Nordwind. (
  • Lassen Sie die Eingabeaufforderung geöffnet, da Sie diese später noch benötigen.
  • Nun öffnen Sie die Nordwind-Datenbank und exportieren eine Tabelle. Dazu verwenden Sie den Eintrag Exportieren… des Kontextmenüs der zu exportierenden Tabelle im Datenbankfenster. Anschließend gehen Sie wie folgt vor:
  • Wählen Sie im Exportieren…-Dialog als Datentyp den Eintrag ODBC-Datenbank aus.
  • Geben Sie den Namen der Zieldatenbank an.
  • Wählen Sie die Datenquelle aus. (
  • Fertig! Wenn Sie nun mit der Anweisung use Nordwind die neue Datenbank namens Nordwind aktivieren, können Sie dort die folgende Anweisung eingeben, um die vorhandenen Tabellen anzuzeigen:
  • show tables;
  • Die Tabelle ist, wie die Ausgabe zeigt, erfolgreich exportiert worden. Nun schauen Sie sich die Struktur der Tabelle an und verwenden dazu die folgende Anweisung:
  • show columns from artikel;
  • Das Ergebnis finden Sie in Bild 5. Es ist schnell zu erkennen, dass beispielsweise keine Informationen über den Primärschlüssel mitexportiert wurden.
  • 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:

  • Legen Sie für jede Tabelle ein Primärschlüsselfeld fest, da sonst das Anlegen von Datensätzen in einer verknüpften Tabelle über Access nicht möglich ist.
  • Verwenden Sie auf keinen Fall BIGINT-Felder, da diese 64Bit enthalten, die Access nicht komplett auswerten kann.
  • 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:

  • Wählen Sie den Menüeintrag Datei/Externe Daten/Tabellen verknüpfen.
  • Stellen Sie im Dialog Verknüpfen den Datentyp auf ODBC-Datenbanken () ein.
  • Im nun erscheinenden Dialog Datenquelle auswählen wechseln Sie zum Registerblatt Computerdatenquelle und betätigen die Schaltfläche Neu (siehe Bild 6).
  • Im Assistenten Neue Datenquelle erstellen behalten Sie im ersten Schritt die Option Benutzerdatenquelle (nur für diesen Computer) bei.
  • Wählen Sie als Treiber den MySQL ODBC 3.51 Driver aus (Installation siehe oben).
  • 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

    Schreibe einen Kommentar