MySQL einrichten und nutzen


Downloads

Der Beste Einstieg geschieht über die Seite http://dev.mysql.com/. Hier besteht die Möglichkeit, sich den gewünschten Datenbankserver auszusuchen. Aktuell ist die Versin 6.0. Diese ist jedoch erst als Alpha-Version erschienen und die GUI-Tools arbeiten mit dieser Version noch nicht zusammen (Stand Januar 2008). Empfohlen wird der Download der akutellen 5er Verision, der Version 5.1 über die Seite http://dev.mysql.com/downloads/mysql/5.1.html

Für den Zugriff auf die Datenbank werden dann - sofern nicht ein nativer Zugriff - erfolgen soll noch die entsprechenden ODBC-Treiber benötigt. Hier gibt es die Möglichkeit, sich die Version

herunter zu laden. Letztere ist seit geraumer Zeit im Beta-Stadium. Unterschiede konnte ich nicht feststellen. Es spricht nichts dagegen, beide Treiber zu installieren

Für die bequeme Verwaltung der Datenbank, die Konvertierung von bestehenden Datenbanken und der Datenzugriff über eine Oberfläche sollten noch die GUI-Tools heruntergeladen werden. Diese sind in der Version 5.0 (Stand Januar 2008) akutell. Die Tools bestehen aus einem

insbesondere die ersten beiden Tools sind zu empfehlen. Ersteres um schnell Benutzer, Schematas und Rechte zu setzen, letzteres um schnell SQL Befehle auf Tabellen u.a. zu testen und zu entwicklen. Wer gerne alles über die Kommandozeile erledigt benötigt diese Tools nicht

Die Dokumentation zu MySQL ist hier zu finden.Empfehle hier die Online-Version, die es nicht in Deutsch gibt

Installation

Die ODBC-Treiber und die GUI-Tools werden wie gewöhnlich installiert. Etwas besonderes ist dabei nicht zu beachten.

Auch bei der Installation der Datenbank gibt es nur eine Besonderheit:

Grundsätzlich gibt es zwei Möglichkeiten auf eine Datenbank zuzugreifen

MySQL bietet die Möglichkeit, über eine eigene API in den Sprachen C,C++, PHP, PERL, PYTHON, EIFFEL oder Tcl auf die Datenbank zuzugreifen. Wer diesen Weg wählt, braucht die ODBC-Treiber nicht zu installieren, darf aber bei der Installation der Datenbank nicht die "Standardinstallation" wählen, sondern die "Benutzerdefinierte". Dann besteht die Möglichkeit, dort die entsprechende API auszuwählen. Die wird dann installiert. Ansonsten fehlen - für C,C++ - die benötigten header- und lib-Dateien. Informationen über die APIs gibt es hier.

Nach der Installation startet automatisch ein Konfigurationsprogramm. Hier kann MySQL es grundsätzlich bei den Standardvorgaben bleiben. Die Art der DB sollte den eigenen Bedürfnisses angepasst werden. Developermachine auswählen und das Data Directory - dort werden dann die Datenbanken gespeichert - können eigenen Anforderungen angepasst werden.

Schema & Benutzer

Nachdem nun das System installiert ist, soll ja mit der Datenbank programmiert werden. Dazu wird ein Schema benötigt. Das ist die "eigentliche" Datenbank, der Bereich innerhalb der gesamten Datenbank auf die dann ein Programm zugreift. Da man verschiedene Programme hat, wird man nicht für jedes Programm das gleiche Schema benutzen, vielmehr wird man jedem Programm ein eigenes Schema zuordnen. Auch wird man jedem Programm, welches die Datenbank benutzt nicht root-Rechte einräumen. Sonst hätte dieses Programm kontrolle über die gesamte Datenbank.

Also muss ein "Rechteinhaber" den ersten Schritt machen in der Datenbank einen bestimmten Bereich für ein Programm einrichten. Ein Schema erstellen. Das geht am einfachsten mit dem Adminstratorprogramm. Nach dem Start findet man dort Inforamtionen über den laufenden Dienst, die Umgebung, die Performance u.v.m.

Die Schemata findet man in dem Tool im Abschnitt "Kataloge". Mit der recten Maustaste wird ein "Neues Schema angelegt".

Das war es dann schon.

Das was für die Schemata gilt, gilt auch für die Benutzer. Nicht jeder soll und darf jedes Schema benutzen. Aus diesem Grunde sollte mindestens ein Benutzer für jedes Schema eingerichtet werden. Über die Benutzerverwaltung wir ein neuer Benutzer angelegt:

Dieser neue Benutzer kann erstmal gar nichts. Ihm müssen nun ein oder mehrere Schemata zugeordnet werden sowie die Rechte, was er in diesen Schemata ausführen darf. Das geschieht über die Karteikarten "Schema-Berechtigungen" und "Globale-Berechtigungen":

Zunächst wird der Benutzer ausgewählt, dann ein Schema und dann die Rechte die der Benutzer in diesem Schema haben soll. Für den Heimgebrauch sollten da wohl keine Einschränkungen gelten

Soll der Benutzer spezielle Rechte haben, sind diese unter "Globale-Berechtigungen" anzugeben. Hierzu gehört beispielsweise das Recht, Daten aus einer Datei im Filesystem in eine Tabelle der Datenbank zu laden. Die Anwendung Analyser mit Datenbankauswertung beispielsweise läd die Daten der Ländercodes und die Fehlercodes bei erstmaligen Start aus einer Datei in entsprechende Tabellen der Datenbank. Damit das Programm dies tun kann, benötigt der Benutzer mit dem das Programm arbeitet das Recht dazu. Dies wird dann so gesetzt:

Damit wäre ein Schema angelegt und ein Benutzer. Alles weitere kann vom Programm erfolgen

Programmierung

Hier soll gezeigt werden, wie man auf die Datenbank zugreift. Das passiert grundsätzlich genau so wie bei anderen Danenbanken auch, jedoch unterstützt der C++Builder bis Version 2006 nicht direkt MySQL. Dennoch ist der Zugriff möglich. Erklärt wird jetzt hier der Zugriff über einen ODBC-Treiber. wer den nativen Zugriff bevorzugt braucht jetzt nicht weiter zu lesen

Üblicherweise "weiss" ein Programm nicht,

Diese Daten sind ja erst im Laufe der Installation und der Einrichtung der Datenbnak angefallen und müssen dem Programm bei (ersten) Start mitgegeben werden. Man die Daten beispielsweise mit einem solchen Dialog erfragen:

Hinsichtlich der Ermittlung der ODBC-Treiber sei auf den folgenden Abschnitt verwiesen. Der Server ist der Rechnername meist auch "localhost", wenn MySQL auf dem gleichen Rechner läuft. Das Schema haben wir greade oben angelegt, das trifft auch auf den User und dessen Passwort zu. Der Port (hier 3306 = Standard) wurde bei der Einrichtung angegeben und kann über das Adminstrationstool geändert werden.

Mit diesen Daten "weiss" das Programm dann alles um auf eine "Teil" - das Schema - zuzugreifen.

ODBC-Treiber im System feststellen

Für den Dialog oben, wurd die ODBC-Treiber ausgelesen. Dies geschieht mit folgendem Codestück, wobei nach mysql gefiltert wird und SQLDriver der Name des Pulldownmenüs ist:

HENV hEnv;
UCHAR szDriverDesc[300];
SWORD pcbDriverDesc;
UCHAR szDriverAttributes[300];
SWORD pcbDrvrAttr;
RETCODE retcode=0;
String drv,drvorg;
if (SQLAllocEnv(&hEnv)==SQL_SUCCESS)
	{
	while (retcode=SQLDrivers(hEnv, SQL_FETCH_NEXT,(UCHAR FAR *)&szDriverDesc, 300,(SWORD FAR *)&pcbDriverDesc,(UCHAR FAR *)&szDriverAttributes,300,(SWORD FAR *)&pcbDrvrAttr) != SQL_NO_DATA_FOUND&&retcode!=SQL_ERROR)
		{
		drv=(char*)szDriverDesc;
		drvorg=drv;
		drv=drv.LowerCase();
		if(drv.Pos("mysql")>0)
			SQLDriver->Items->Add(drvorg);
		}
	SQLFreeEnv(hEnv);
	}
SQLDriver->ItemIndex=0;

Verbindung einrichten

Nunmehr sind alle Daten vorhanden um ein Verbindung einzurichten. Während der C++Builder bis zur version 2006 hier MySQL nicht direkt unterstützt, soll dies wohl in der 2007er Version enthalten sein.

Zur verbindung wird der Connect-String gebraucht. Dieser enthält alle für die Verbindung notwendigen Daten. Er ist je nach ODBC Treiber unterschiedlich

Für den 3.51 ODBC Treiber

String con="DRIVER={MySQL ODBC 3.51 Driver}; SERVER=XXXXXXX; PORT=XXXXXXX; DATABASE=XXXXXXX; USER=XXXXXXX; PASSWORD=; OPTION=3;";

Für den 5.1 ODBC Treiber

String con="DRIVER={MySQL Connector/ODBC v5}; SERVER=XXXXXXX; PORT=XXXXXXX; DATABASE=XXXXXXX; USER=XXXXXXX; PASSWORD=; OPTION=3;";

Die XXXXXXX sind durch die Werte aus dem Dialog zu erstzen. Wurde für einen Benutzer kein Passwort vergeben - was möglich ist - so bleibt das leer.

Damit sind dann die Daten für eine Verbindung zusammengestellt

Datenzugriff

Für die eigentliche Verbindung werden die dbGo Komponenten genutzt. Zur Herstellung einer Verbindung TADOConnection:

TADOConnection *con=new TADOConnection(this);
con->ConnectionString="DRIVER={MySQL Connector/ODBC v5}; SERVER=localhost; PORT=3306; DATABASE=test; USER=root; PASSWORD=; OPTION=3;";
con->LoginPrompt=false;
try
	{
	con->Connected=true;
	//hat geklappt
	}
catch(...)
	{
	// hat nicht geklappt
	}

Diese Verbindung nun kann anderen Datenbankkomponeten übergeben werden beispielsweise einer Query um ein SQL-Statement abzusetzen

TADOQuery *query=new TADOQuery(NULL);
query->Connection=con;

einem Table um eine Tabelle zu lesen:

TADOTable *table=new TADOTable(NULL);
table->Connection=con;

Natürlich kann die Connection auch über die visuellen Komponenten so hergestellt werden, in dem der String im Objektinspektor eingegeben wird.

Die weitere Bearbeitung ist nicht mehr MySQL spezifisch. Über entsprechende SQL-Statements sollen geprüft werden welche Tabellen schon vorhanden sind und welche angelegt werden müssen. Ggf. müssen die Tabellen mit Ausgangsdaten bestückt werden.

Zum Testen der SQLs und prüfen ist der QueryBrowser da.