theseus$ /usr/local/mysql-scripts/createdb -d mydb ~/MY-DEMODB InnoDB: The first specified data file ./ibdata1 did not exist: InnoDB: a new database to be created! 030502 10:38:24 InnoDB: Setting file ./ibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait... 030502 10:38:25 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... 030502 10:38:26 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 030502 10:38:28 InnoDB: Started /usr/local/mysql/bin.orig/mysqld: ready for connections 030502 10:38:28 /usr/local/mysql/bin.orig/mysqld: Normal shutdown 030502 10:38:29 InnoDB: Starting shutdown... 030502 10:38:30 InnoDB: Shutdown completed 030502 10:38:30 /usr/local/mysql/bin.orig/mysqld: Shutdown Complete theseus$ cd MY-DEMODB/ theseus$ ls ib_arch_log_0000000000 ib_logfile0 ib_logfile1 ibdata1 mydb mysql setenv theseus$Wenn das getan ist, sind einige Vorbereitungen getroffen. Aber: der Datenbank-Server läuft noch nicht! In der Datei setenv stehen die Informationen, über die der Datenbankserver erreicht werden kann:
theseus$ cat setenv MYSQL_UNIX_PORT=/home/thales/jmayer/MY-DEMODB/socket MYSQL_TCP_PORT=10400 theseus$Dies ist später wichtig, wenn wir von Perl-Programmen aus an die Datenbank herangehen! Dazu ist es aber nötig die Datenbank vorher zu starten. Starten der Datenbank:
theseus$ /usr/local/mysql-scripts/startdb ~/MY-DEMODB 030502 10:41:13 InnoDB: Started /usr/local/mysql/bin.orig/mysqld: ready for connections theseus$Bevor wir die interaktive Kommunikation mit dem Datenbankserver suchen, ist es sinnvoll, eine 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.
theseus$ cat createtables #!/bin/sh PATH=/usr/local/mysql/bin:$PATH export PATH . $HOME/MY-DEMODB/setenv export MYSQL_UNIX_PORT export MYSQL_TCP_PORT mysql 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) ); CREATE TABLE Names ( name CHAR(32) NOT NULL, nr INT ); END_OF_SQL theseus$Die Zeile "
. $HOME/MY-DEMODB/setenv
" muss natürlich jeweils
angepasst werden (Datenbank-Directory MY-DEMODB
?);mysql mydb <<'END_OF_SQL'
(Datenbankname mydb
?).
Die Zeilen zwischen
"mysql mydb <<'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:
theseus$ ls mydb/ Abteilungen.MYD Angestellte.MYI Names.frm Projekte.MYD Abteilungen.MYI Angestellte.frm ProjektTeilnehmer.MYD Projekte.MYI Abteilungen.frm Names.MYD ProjektTeilnehmer.MYI Projekte.frm Angestellte.MYD Names.MYI ProjektTeilnehmer.frm theseus$Um in den interaktiven Arbeitsmodus mit der Datenbank zu kommen, empfiehlt sich folgendes kleine Skript workondb:
theseus$ cat workondb #!/bin/sh PATH=/usr/local/mysql/bin:$PATH export PATH . $HOME/MY-DEMODB/setenv export MYSQL_UNIX_PORT export MYSQL_TCP_PORT exec mysql mydb theseus$Dieses Skript sollte wieder angepasst werden (
MY-DEMODB
und mydb
) und
mit chmod +x
wieder ausführbar gemacht werden.
Dieses kann danach ausgeführt werden:
theseus$ workondb 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>Damit ist der interaktive Modus erreicht: die Datenbank meldet sich mit ihrem Prompt
mysql>
!
Durch Eingabe von quit
können wir diesen interaktiven Modus beenden.
Durch Eingabe von
theseus$ /usr/local/mysql-scripts/stopdb ~/MY-DEMODB 030502 10:57:32 /usr/local/mysql/bin.orig/mysqld: Normal shutdown 030502 10:57:32 InnoDB: Starting shutdown... 030502 10:57:34 InnoDB: Shutdown completed 030502 10:57:34 /usr/local/mysql/bin.orig/mysqld: Shutdown Complete theseus$"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:
theseus$ cat startdb #!/bin/sh /usr/local/mysql-scripts/startdb $HOME/MY-DEMODB theseus$ cat stopdb #!/bin/sh /usr/local/mysql-scripts/stopdb $HOME/MY-DEMODB theseus$Alles zusammen am Anfang:
theseus$ /usr/local/mysql-scripts/createdb -d mydb ~/MY-DEMODB
MY-DEMODB
theseus$ startdb
theseus$ createtables
theseus$ workondb
mysql> quit
theseus$ 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".