Die freie Datenbank MySQL
MySQL ist ein häufig eingesetzter freier und schneller Open-Source-Datenbank-Server.
MySQL (http://www.mysql.com/)wird oft im Internet in Zusammenhang mit dynamischen Web-Seiten eingesetzt; das Zusammenspiel Linux, Apache, MySQL, PHP (LAMP-System) ist hoch gelobt. Herausragende Eigenschaften sind die Geschwindigkeit und die Bedienbarkeit; die hohe Geschwindigkeit beruht teilweise darauf, dass MySQL auf Transaktionen verzichtet. Seit der Version 4 kann eine alternative Datenbank-Engine (InnoDB, http://www.innodb.com/) aber auch Transaktionen ausführen.
Wie alles begann
Die Entwicklung vom MySQL hatte mSQL als Vorbild, und MySQL würde es auch
nicht geben, wenn der finnische Entwickler Michael (Monty) Widenius nicht von
der mSQL-Entwicklermannschaft enttäuscht worden wäre. Die schwedische Firma T.
c. X. DataKonsultAB hatte mSQL ausgiebig für eine webbasierende Anwendung zur
Verwaltung von Datenbanken genutzt. Das System hieß UNIREG. Nach ausführlichen
Verbesserungsvorschlägen an die Mannschaft von mSQL geschah nichts. Nie. Keine
Antwort. Daraufhin entwickelte die Firma (hauptsächlich eine Arbeit von
Widenius, der 95 % der Server-Codes schrieb) auf der Basis von UNIREG und mSQL
die neue Datenbank MySQL. Sie wurde im Mai 1995 in der Version 1.0 der
Öffentlichkeit vorgestellt. Die Firma T.c.X wurde dann in MySQL AB umbenannt und
verdient heute viel Geld mit Support und Schulungen. Michael Widenius ist heute
CTO (Chief Technology Officer, Technologischer Geschäftsführer). Die Firma ist
in Uppsala – Hauptstadt der Provinz Uppland in Schweden – ansässig.
Seit Juni 2000 ist die MySQL als Open-Source-Software kostenlos verfügbar und
steht unter der GNU General Public License (GPL). Lizenzgebühren fallen an, wenn
MySQL als integraler Bestandteil der eigenen Anwendung vertrieben wird.
Hinweis: Auch wenn bisweilen mit Open Source und GPL immer verbunden wird, dass die Software frei verfügbar ist, heißt es nicht, dass sie umsonst ist. Wer MySQL mit einer Software bündelt, die verkauft wird, muss eine MySQL-Lizenz für 395 $ erwerben. Ohne Lizenz lässt sich zum Beispiel PostgreSQL (http://www.postgresql.org/) einsetzen, eine weitere ausgezeichnete freie Datenbank.
Installation
Wir wollen MySQL in der Version 4 nutzen. Dazu entpacken wir das Zip-Archiv, welches unter http://www.mysql.com/downloads/mysql-4.0.html zum Download liegt. Das Archiv ist etwa 17 MB groß und enthüllt eine Datei install.exe, welche die Installation startet. MySQL schlägt den Pfad c:\mysql vor, den wir beibehalten sollten. (Andernfalls geht es gleich danach mit einer Konfigurationsdatei weiter, und das wollen wir uns ersparen.) Dann kann die Installation ohne weitere Besonderheiten weitergeführt werden.
Wechseln wir anschließend in das Unterverzeichnis bin der Installation. Dort existieren unterschiedlich optimierte Variablen des Servers (Näheres dazu unter http://www.mysql.com/doc/W/i/Windows_prepare_environment.html). Wir wollen mysqld-max-nt nutzen. Das Programm kann mit verschiedenen Optionen aufgerufen werden.
- mysqldXXX.exe --standalone (startet den MySQL-Server)
- mysqldXXX.exe --install (installiert den MySQL-Server als Dienst)
- mysqldXXX.exe --remove (entfernt den MySQL-Server-Dienst)
Wir ziehen erst einmal einen normalen Start ohne Service vor:
C:\mysql\bin>mysqld-max-nt --standalone
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
InnoDB: Setting file .\ibdata1 size to 64 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Log file .\ib_logfile0 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile0 size to 5 MB
InnoDB: Log file .\ib_logfile1 did not exist: new to be created
InnoDB: Setting log file .\ib_logfile1 size to 5 MB
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
020412 12:47:32 InnoDB: Started
MySQL legt einige Tabellen an, und dann läuft der Server.
Wir wollen jetzt eine Datenbank anlegen. Dazu gibt es den Msql-Client. Er existiert einmal als Kommandozeilenprogramm (msql.exe) und als Windows-GUI (MySqlManager.exe). Bleiben wir bei der Kommandozeile.
C:\mysql\bin>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20 to server version: 4.0.1-alpha-max-nt
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
Geben wir help ein, bekommen wir eine Hilfe. Mit exit beenden wir den Client. Geben wir die Tabellen aus, die schon vorhanden sind:
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql>
Machen wir eine Anfrage. Das funktioniert gut, da MySQL selbst Informationen in Tabellen speichert.
SELECT * FROM mysql.user;
Natürlich sollten diese Informationen durch Passwort geschützt sein, doch das
soll nicht unsere Aufgabe sein.
Die Datenbank test eignet sich sehr gut zum Spielen. Sie ist leer, und hier
können zum Testen neue Tabellen angelegt und mit Daten gefüllt werden. Das
grafische Tool bietet die gleichen Möglichkeiten, nur mit einer grafischen
Schnittstelle. SQL-Kommandos zum Erstellen der Tabellen müssen immer noch von
Hand eingegeben werden. Um davon wegzukommen, bietet sich Ansgars MySQL-Front
an.
Für die Administration des Servers gibt es ebenfalls ein Kommandozeilenprogramm (mysqladmin.exe) und das Programm mit grafischer Oberfläche (WinMySQLAdmin.exe). Das Passwort ist am Anfang egal, es muss nur etwas dort stehen.
GUI-Frontends
Das kostenlose Backend MySQL lässt sich sehr gut mit der grafischen Microsoft Software (Access, Excel) verbinden, so dasshier Tabellendefinitionen und Anfragen über eine einfach zu bedienende Schnittstelle erfolgen können. Die englischsprachige Web-Seite http://www.washington.edu/computing/web/publishing/mysql-access.html gibt dazu eine kleine Information. Gleichzeitig zeigt sie, wie Daten anderer ODBC-Quellen in MySQL importiert werden können.
JDBC-Treiber für MySQL: MySQL Connector/J
MySQL kann einfach über den unter der LGPL stehenden Typ-4-JDBC-Treiber MySQL Connector/J4 bedient werden. Der Treiber liegt unter http://www.mysql.com/downloads/api-jdbc.html bereit. Nach dem Entpacken muss das Jar-Archiv des Treibers noch im Klassenpfad aufgenommen werden. Er unterstützt die JDBC-3.0-API.
Eine Alternative unter Windows: SQL Server Express
SQL Server 2005 Express Edition (SQL Server Express) ist eine freie Datenbank von Microsoft. Sie ist eine leichtgewichtige Version der “großen” Datenbank Microsoft SQL Server 2005 und setzt MSDE 2000. Um den Server zu installieren, sind zunächst Administratorrechte nötig. Dann muss als Erstes die aktuelle Version von .NET 2.0 installiert werden. (.NET Framework Version 2.0 Redistributable Package (dotnetfx.exe)). Dann lässt sich Microsoft SQL Server 2005 Express Edition (SQLEXPR.EXE) hinzunehmen. Einen aktuellen JDBC-Treiber gibt es ebenso bei MS.