Die im Folgenden rot dargestellten Texte sind durch die jeweils eigenen Wahlen für Datenbankname (hier: mydb), Verzeichnis (hier: ~/db) und Passwort (hier: test), welches für den einzigen Benutzer sep gilt, zu ersetzen.
Um eine eigene Datenbank mit Namen mydb (der Default-Name ist main) im Katalog ~/db (das muss ein absoluter Pfadname sein!) anzulegen, gehen Sie wie folgt vor (test ist dabei das Passwort, das für den Benutzer sep angegeben werden muss):
turing$ /home/sep2004/software/installed/mysql-scripts/createdb -d mydb ~/db test InnoDB: The first specified data file ./ibdata1 did not exist: InnoDB: a new database to be created! 041011 17:18:29 InnoDB: Setting file ./ibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait... 041011 17:18:30 InnoDB: Log file ./ib_logfile0 did not exist: new to be created InnoDB: Setting log file ./ib_logfile0 size to 5 MB InnoDB: Database physically writes the file full: wait... 041011 17:18:31 InnoDB: Log file ./ib_logfile1 did not exist: new to be created InnoDB: Setting log file ./ib_logfile1 size to 5 MB InnoDB: Database physically writes the file full: wait... 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 041011 17:18:33 InnoDB: Started /usr/local/mysql/bin.orig/mysqld: ready for connections 041011 17:18:33 /usr/local/mysql/bin.orig/mysqld: Normal shutdown 041011 17:18:34 InnoDB: Starting shutdown... 041011 17:18:34 InnoDB: Shutdown completed 041011 17:18:34 /usr/local/mysql/bin.orig/mysqld: Shutdown Complete turing$ ls db ib_arch_log_0000000000 ib_logfile0 ib_logfile1 ibdata1 mydb mysql setenv turing$Damit gibt es nun eine Datenbank, aber der Datenbank-Server läuft noch nicht!
In der Datei setenv (im Datenbankverzeichnis) stehen die Informationen, über die der Datenbankserver erreicht werden kann:
turing$ cat db/setenv MYSQL_UNIX_PORT=/home/thales/jmayer/db/socket MYSQL_TCP_PORT=15827 turing$Dies ist später wichtig, wenn wir von einem Programm aus an die Datenbank herangehen! Dazu ist es aber nötig die Datenbank vorher zu starten.
Starten der Datenbank:
turing$ /home/sep2004/software/installed/mysql-scripts/startdb ~/db turing$ 041011 17:26:37 InnoDB: Started /usr/local/mysql/bin.orig/mysqld: ready for connections turing$Bevor wir die interaktive Kommunikation mit dem Datenbankserver suchen, ist es sinnvoll, ein Skript zu entwickeln mit dem die Tabellen unserer Datenbank mydb angelegt werden. Als Beispiel sei die Datei createtables angegeben, mit der die Beispiele im Skript erzeugt werden.
turing$ cat createtables #!/bin/bash /home/sep2004/software/installed/mysql-scripts/workondb ~/db mydb <<'END_OF_SQL' CREATE TABLE Angestellte ( persid VARCHAR(32) NOT NULL PRIMARY KEY, INDEX (persid), name VARCHAR(255) NOT NULL, abtid VARCHAR(32) NOT NULL REFERENCES Abteilungen ); CREATE TABLE Abteilungen ( abtid VARCHAR(32) NOT NULL PRIMARY KEY, INDEX (abtid), name VARCHAR(255) NOT NULL, chef VARCHAR(32) REFERENCES Angestellte ); CREATE TABLE Projekte ( projektid VARCHAR(32) NOT NULL PRIMARY KEY, INDEX (projektid), name VARCHAR(255) NOT NULL ); CREATE TABLE ProjektTeilnehmer ( projektid VARCHAR(32) NOT NULL REFERENCES Projekte, INDEX (projektid), persid VARCHAR(32) NOT NULL REFERENCES Angestellte, INDEX (persid), PRIMARY KEY (projektid, persid) ); END_OF_SQL turing$ ./createtables Enter password: test turing$Natürlich muss das Skript entsprechend dem gewählten Verzeichnis- und Datenbanknamen geändert werden. Die Zeilen zwischen "
... <<'END_OF_SQL'
"
und
"END_OF_SQL
"
enthalten die Tabellen-Definitionen, die entsprechend geändert werden können.
Danach kann die Datei ausführbar
(chmod +x createtables
)
gemacht und ausgeführt werden.
Damit werden dann im Datenbank-Directory
mydb interne Repräsentationen dieser
Tabellen angelegt:
turing$ ls db/mydb/ Abteilungen.MYD Angestellte.MYD Names.MYD ProjektTeilnehmer.MYD Projekte.MYD Abteilungen.MYI Angestellte.MYI Names.MYI ProjektTeilnehmer.MYI Projekte.MYI Abteilungen.frm Angestellte.frm Names.frm ProjektTeilnehmer.frm Projekte.frm turing$ /home/sep2004/software/installed/mysql-scripts/workondb ~/db mydb Enter password: test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 to server version: 4.0.9-gamma-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show tables; +-------------------+ | Tables_in_mydb | +-------------------+ | Abteilungen | | Angestellte | | ProjektTeilnehmer | | Projekte | +-------------------+ 4 rows in set (0.00 sec) mysql> Bye turing$Um in den interaktiven Arbeitsmodus mit der Datenbank zu kommen, empfiehlt sich folgendes kleine Skript workondb:
turing$ cat workondb #!/bin/bash /home/sep2004/software/installed/mysql-scripts/workondb ~/db mydb turing$Dieses Skript sollte wieder angepasst werden (~/db und mydb) und mit
chmod +x
wieder ausführbar gemacht werden.
Dieses kann danach ausgeführt werden:
turing$ ./workondb Enter password: test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.0.9-gamma-standard-log Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>Damit ist der interaktive Modus erreicht: Die Datenbank meldet sich mit ihrem Prompt
mysql>
!
Durch Eingabe von quit
oder <Ctrl-D> können wir
diesen interaktiven Modus beenden.
Durch Eingabe von
turing$ /home/sep2004/software/installed/mysql-scripts/stopdb ~/db Enter password: test 041011 17:54:13 /usr/local/mysql/bin.orig/mysqld: Normal shutdown turing$ 041011 17:54:13 InnoDB: Starting shutdown... 041011 17:54:13 InnoDB: Shutdown completed 041011 17:54:13 /usr/local/mysql/bin.orig/mysqld: Shutdown Complete turing$"fahren" wir danach die Datenbank "herunter".
Da die Kommandozeilen zum Starten wie zum beenden relativ lange sind, können wir beide Kommandos auch in eine ausführbare Datei stecken:
turing$ cat startdb #!/bin/bash /home/sep2004/software/installed/mysql-scripts/startdb ~/db turing$ cat stopdb #!/bin/bash /home/sep2004/software/installed/mysql-scripts/stopdb ~/db turing$Alle Schritte nochmal im Überblick:
turing$ /home/sep2004/software/installed/mysql-scripts/createdb -d mydb ~/db test
turing$ startdb
turing$ createtables
turing$ workondb
mysql> quit
turing$ stopdb
Bitte denken Sie immer daran, Ihren Datenbank-Server mittels stopdb
zu beenden, sobald Sie ihn nicht mehr benötigen, um nicht unnötig
Ressourcen zu "verbraten".