Universität Essen / Institut für Experimentelle Mathematik / Lehrstuhl Technik der Rechnernetze / Thomas Dreibholz
MySQL SQL-Datenbank für Linux
Mindestens Version 3.22.22; ältere Versionen können mit "insert values ..."
immer nur ein einziges Tupel einfügen. Mit diesen Versionen
funktionieren die PUMA-Komponenten nicht!
TWZ JDBC-Treiber für MySQL
Kaffe Java-Compiler und VM, z.B. von www.kaffe.org
(Empfohlen. Kleiner und schneller als Original von Sun)
Guavac Java-Compiler
(Empfohlen. Um Vielfaches(!) schneller als Original von Sun)
Ich beschreibe hier die Installation in ein Verzeichnis unterhalb von /tmp, da i.d.R. nicht genug Quota für eine Installation im Home-Verzeichnis zur Verfügung steht und das Arbeiten über NFS auch nicht sehr schnell wäre. Außerdem benötigt man auch keine Root-Rechte.
1. Entpacken des Archivs nach z.B. /tmp/mysql-3.23.7-alpha
2. Im diesem Verzeichnis "./configure --prefix=/tmp/mysql" aufrufen.
MySQL wird dann später nach /tmp/mysql installiert.
Falls ./configure fehlschläft: Evtl. ist auf dem Rechner die
falsche Compiler-Version installiert -> ggf. anderen Rechner benutzen
oder beim Support nachfragen. Auf den Linux-Rechnern in den Terminalräumen
im Neubau sollten keine Probleme auftreten.
3. "make" aufrufen. MySQL wird übersetzt.
4. "make install" aufrufen. MySQL wird in das unter 2. angegebene Verzeichnis (/tmp/mysql) installiert.
5. Nach /tmp/mysql wechseln und dort "./bin/mysql_install_db" (oder "scripts/mysql_install_db", je nach Version. Siehe auch Anleitung von MySQL!) startet. Damit werden Tabellen für die Verwaltung erzeugt und ein Root-User angelegt.
6. Jetzt kann der Server mit "bin/safe_mysqld &" gestartet werden.
7. Mit "./bin/mysqladmin -uroot password rootpwd" wird dem Root-User das Passwort "rootpwd" zugewiesen. Ab jetzt muß beim Aufruf von mysqladmin, z.B. zur erneuten Änderungen des Passwortes, das aktuelle Passwort mit angegeben werden, also z.B. "./bin/mysqladmin -uroot -prootpwd password neuespwd"! Bemerkung: Der Root-User der Datenbank hat nichts mit dem Root-User des Unix-Rechners zu tun!
8. Mit "./bin/mysqladmin -uroot -prootpwd reload" wird der Datenbank-Server veranlaßt, die Verwaltungsinformationen neu einzulesen. Erst jetzt ist das eben gesetzte Passwort verwendbar. Wichtig: Immer wenn irgend etwas an den Verwaltungtabellen von MySQL geändert wurde, muß der DB-Server mit Hilfe dieses Kommandos dazu gebracht werden, die Verwaltungsinformationen neu einzulesen. Erst dann werden diese gültig!
9. Wenn (1) bis (8) erfolgreich durchgeführt wurde, ist der SQL-Datenbankserver nun betriebsbereit.
1. Im Folgenden: Überall, wo mysql bzw. mysqladmin aufgerufen wird, muß natürlich der komplette Pfad zu diesen Programmen angegeben werden. Dies wäre mit der Beispiel-Installation oben "/tmp/mysql/bin/mysql" bzw. "/tmp/mysql/bin/mysqladmin"! Wichtig: In die Skripte "erstelle.datenbank", "loesche.datenbank" und "update.datenbank" in Abschnitt (2) und (3) muß dieser Pfad vor Benutzung eingetragen werden! Siehe dazu den Kommentar in den genannten Skripten.
2. Aufruf des Skriptes "erstelle.datenbank" im Verzeichnis "SQL" der
PUMA-Komponenten. Dabei wird folgendes ausgeführt:
A. mysql -uroot -prootpwd -e "INSERT INTO user VALUES('%','lupo',password('geheim'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')" mysql
B. mysqladmin -uroot -prootpwd create Bibliothek
C. mysqladmin -uroot -prootpwd reload
D. mysql -ulupo -pgeheim Bibliothek -f < Datenbank.sql
A. legt einen neuen Benutzer "lupo" an, der mit allen Rechten
ausgestattet ist und sich von jedem Rechner aus einloggen darf
(Aus Sicherheitssicht ist beides natürlich nicht empfehlenswert und sollte
keinesfalls im echten Einsatz gemacht werden!).
Dazu wird ein Tupel in die Tabelle "user" der Datenbank "mysql" eingefügt.
B. erstellt eine neue Datenbank mit dem Namen "Bibliothek".
C. Neueinlesen der Verwaltungsinformationen -> Erst jetzt sind
User "lupo" und Datenbank "Bibliothek" verfügbar!
D. Das SQL-Schema für den Publikationsmanager wird als Eingabe für mysql
verwendet. Es erzeugt die Tabellen für den Publikationsmanager.
3. Wenn später einmal die Datenbank gelöscht oder aktualisert werden soll,
können die Skripte "loesche.datenbank" und "update.datenbank" benutzt werden.
Wichtig:Datenbank.sql löscht automatisch vorhandene
Tabellen mittels "drop table if exists ...". Man erhält damit immer
eine vollständig neue Ausprägung.
4. Anmerkung: Später sollten einmal die Rechte und Passwörter für "root" und "lupo" überprüft werden. Es ist sicher nicht sinnvoll, dem Bibliotheks-Benutzer "lupo" sämtliche Rechte für die Datenbank zu geben. Die Passwörter "rootpwd" für "root" und "geheim" für "lupo" sind außerdem viel zu einfach.
5. Test der Installation: "mysql -ulupo -pgeheim Bibliothek". Damit meldet
man sich als Benutzer "lupo" mit Passwort "geheim" am Server an und wechselt
in die Datenbank "Bibliothek". Nun kann man interaktiv SQL-Befehle eingeben.
Beispiel: select * from PUBLIKATIONS_TYPEN;
Dieser Befehl sollte nun eine Liste mit Publikationstypen und deren
Feldern liefern. Wenn alles fehlerfrei funktionierte, stehen nun der SQL-Server
und eine leere Publikationsdatenbank zur Verfügung.
1. Wechsel in das Unterverzeichnis "DatenbankKern".
2. Editieren von "Makefile". Hier muß die Variable JAVAC korrekt gesetzt werden; siehe dazu die Beispiele in "Makefile". Insbesondere muß der classpath-Parameter richtig eingestellt werden!
3. Installation des JDBC-Treibers TWZ1 durch einfaches entpacken. Dann kann z.B. ein Link ins aktuelle Verzeichnis ("DatenbankKern") erstellt werden: "ln -s [Pfad zu TWZ]/twz1 [Pfad zu PUMA-Komponenten]/DatenbankKern". Gegebenenfalls classpath im Makefile aktualisieren!
4. Übersetzen durch Aufruf von "make". Falls Fehler dabei auftreten: JAVAC in "Makefile" überprüfen. Sind Pfade und classpath richtig gesetzt?
5. Einstellungen in "Einstellungen.dat" überprüfen: Hier wird die Verbindung zum SQL-Server eingestellt: User, Passwort, Server-Adresse und Treiber.
6. Test von DatenbankKern mit z.B. "kaffe KernTest" oder "java KernTest".
Wenn hier Java-Fehler auftauchen: Classpath-Einstellungen
überprüfen. Andere Java-Version benutzen. Installation von TWZ1 prüfen.
Java JDK 1.2 hat Probleme mit für ältere Versionen kompilierten
Java-Bytecode -> ggf. mit Original-javac kompilieren
Kaffe 1.0.5 hat Probleme mit TWZ1: Im Kaffe-Source kaffe/kaffevm/jit3/machine.c,
Zeile 766 ("assert((reginfo[to->regno].type & Rglobal) == 0);") auskommentieren,
Kaffe erneut kompilieren und installieren. Damit sollten die Probleme behoben sein.
Version 1.0.4 hat dieses Problem nicht.
Wenn hier SQL-Fehler auftauchen: Einstellungen in "Einstellungen.dat"
überprüfen. Stimmen Server-Adresse, Port, User und Passwort? Läuft der SQL-Server überhaupt?
Ist der aktuelle Rechner von Verbindungen zum Server ausgeschlossen (Attribut "Host" in Tabelle
"user" in Datenbank "mysql"). Siehe dazu auch die Dokumentation von MySQL!
Wenn keine Fehler auftreten: KernTest führt Suchen auf der Datenbank aus.
Da die Datenbank leer ist, werden auch keine Publikationen aufgelistet.
7. Test von MailDispatcher mit z.B. "kaffe MailDispatcherTest" oder
"java MailDispatcherTest". Zu Java-Fehlern siehe oben.
MailDispatcherTest schickt eine Test-Mail an den User lupo@localhost.
Gegebenenfalls eine andere Mail-Adresse in MailDispatcherTest.java eintragen! Die Adresse
des SMTP-Servers wird in "Einstellungen.dat" gesetzt. Gegebenenfalls dort die Adresse
des SMTP-Servers korrigieren, falls nicht "localhost"!
8. Wenn alles erfolgreich verlaufen ist, sind die Komponenten DatenbankKern und MailDispatcher nun einsatzbereit.
1. Ins Unterverzeichnis "TestdatenGenerator" wechseln und "Makefile" falls notwendig editieren. Hier können CC (C++-Compiler) und CCOPT (Compiler-Optionen) gesetzt werden. Die vorhandenen Einstellungen sollten i.d.R. jedoch ausreichen.
2. Generator mit "make" übersetzen.
3. Generator mit "./generator 20 100 10 | mysql -ulupo -pgeheim Bibliothek" testen.
Der Testdaten-Generator schreibt ein SQL-Skript nach stdout; Statusausgaben
werden nach stderr geschrieben. Mit dem Pipe-Symbol "|" kann das SQL-Skript direkt
an MySQL gegeben werden, ohne Zwischenspeicherung.
Wenn keine Fehler aufgetreten sind, wurde nun die Datenbank mit 20 Benutzern,
100 Publikationen und bis zu 10 Instanzen pro Publikation gefüllt.
Für eine genauere Beschreibung des Generators: Testdaten-Generator
28.01.2011 Thomas Dreibholz, Universität Essen / Institut für Experimentelle Mathematik / Lehrstuhl Technik der Rechnernetze