Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
[Photo of the Author]
by Jose M. Fernández

Content:

MySQL, ein Datenbank Server

[Illustration]

Abstract:

MySQL ist ein SQL (Structured Query Language) Datenbank Server, der von zahlreichen Plattformen, einschließlich Linux, unterstützt wird. Seine Linuxversion ist mit dem Ziel einer schnellen Performance entworfen worden.



 

Einführung

MySQL ist ein SQL (Structured Query Language) Datenbank Server. Es ist eine Client-Server Applikation, die aus einem Server und zahlreichen Clients besteht.

Eine SQL Datenbank zu diskutieren ist sehr komplex, da man dazu zu den Anfängen von relationalen Datenbanksystemen gehen müßte, aber die Absicht dieses Artikels ist nicht so hochgesteckt, sondern wir versuchen einfach, eine spezifische Implementation eines SQL Servers zu beschreiben und zu demonstrieren.

Als eine historische Erinnerung laßt uns erwähnen, daß IBM 1981 damit begann, SQL zu vermarkten, und daß dieses Produkt seitdem eine grundlegende Rolle in der Entwicklung von relationalen Datenbanken gespielt hat. IBM schlug dem American National Standards Institute (ANSI) eine Version von SQL vor (die später akzeptiert wurde) und seitdem wird SQL allgemein bei relationalen Datenbanken benutzt. DB2, im Moment die beliebteste Datenbank dieses Typs, wurde 1983 entwickelt und wird zumeist in Mainframeumgebungen eingesetzt.

In der GNU Welt ist MySQL die Datenbank, die am häufigsten im Kontext von relationalen Datenbanken unter Linux genannt wird. Diese Applikation ist in keiner der Linuxdistributionen erhalten, weil es keine per se GNU Lizenz hat. Die kommerzielle Nutzung von MySQL oder einer Applikation, die sie verwendet, erfordert den Kauf einer Lizenz.

Dieser Datenbankserver wird (das ist sogar explizit in der Dokumentation erwähnt) als der schnellste und robusteste Datenbankserver für große und kleine Datenvolumen angesehen (natürlich muß man MySQL mit Servern der gleichen Kategorie vergleichen). Wie wir später diskutieren werden, wird die hohe Geschwindigkeit bei der Verarbeitung auf Kosten von einer Anzahl nicht implementierter Features des SQL Standards erreicht.

MySQL ist verfügbar (Sources und Binary) für: Linux 2.0+, SCO, Solaris 2.5, 2.6, SUNOS 4.x, BSDI 2.x, 3.0, SGI IRIX 6.x, AIX 4.x, DEC UNIX 4.x, HPUX 10.20, Windows 95 (verzeih mir)

Die freie Version wurde von Michael Windenis geschrieben, und die kommerzielle Version wird von TCX Datakonsulter AB vertrieben.

 

Hauptcharakteristika

 

Installation

Natürlich ist es vor dem Installieren der Datenbank notwendig, die Quellen vom Web runterzuladen:

http://www.tcx.se


oder FTP :
ftp://ftp.sunet.se/pub/unix/databases/relational/mysql

Zuerst müssen wir uns entscheiden, ob wir die Quell- oder die Binär- Distribution herunterladen wollen. Die letzte Option ist am leichtesten zu installieren, aber sie muß für unsere Zielplattform verfügbar sein (sie ist allerdings für die meisten beliebten Plattformen vorhanden).

Binär Installation

Nach dem Herunterladen der Datei:

mysql-Version.tar.gz

mußt du sie auspacken. Dies kann auf viele verschiedene Arten gemacht werden, ich persönlich bevorzuge:

  1. zuerst dekomprimieren :
    gunzip -dfv mysql-Version.tar.gz
  2. und als zweites Herausziehen der Dateien aus dem Archiv:
    tar -xvf mysql-Version.tar

    ich lasse den tar Befehl von dem Verzeichnis /usr/local aus laufen, weshalb die herausgezogenen Dateien unter
    /usr/local/mysql-3.20.32a-pc-linux-gnu-i586 gefunden werden können

    Dies ist kein sehr praktischer Name, weshalb empfohlen wird (das wird auch im Installationshandbuch erwähnt), einen symbolischen Link darauf zu setzen

    > ln -s mysql-3.20.32a-pc-linux-gnu-i586/bin mysql

    Das mysql Verzeichnis enthält das folgende:

    drwxr-xr-x 8192 Nov 24 1993 bin
    drwxr-xr-x 8192 Nov 24 1993 etc
    drwxr-xr-x 8192 Aug 17 1997 i18n
    drwxr-xrx 8192 Mar 16 1994 include
    drwxr-xr-x 8192 Mar 19 02:03 jdk1.1.3
    drwxr-xr-x 8192 Aug 17 1997 jre
    drwxr-xr-x 8192 Mar 16 1994 lib
    lrwxrwxrwx 36 Jan 18 19:40 mysql
    drwxr-xr-x 8192 Feb 5 00:07 mysql-3.20.32a-pc-linux-gnu-i586
    drwxr-xr-x 8192 Nov 24 1993 sbin
    drwxr-xr-x 8192 Nov 24 1993 src

    Unser Softlink auf mysql-3.20.32a-pc-linux-gnu-i586 heißt mysql. Durch
    cd /usr/local/mysql
    gelangen wir in das binäre Verzeichnis von MySQL. Wenn alles gut gegangen ist, dann bist du jetzt startklar, um den Datenbankserver zu starten.

Source (Quell-) Installation

Dekomprimiere die Quellen und packe sie aus wie im vorigen Abschnitt vorgeschlagen.


cd mysql-Version
./configure
make install

Die Quell- Installation kommt mit einer großen Menge an Dokumentation zum Installationsprozeß. Es gibt Informationen über bekannte Bugs, plattformspezifische Anmerkungen sowie Vorschläge für verschiedene Betriebssysteme, Beschreibungen der Parameter für einige Konfigurationen und sogar eine FAQ-Sammlung. Wenn der Installationsprozeß beim ersten Mal geklappt hat, (und das wäre das erste Mal, daß so etwas vorkäme), wäre das Ergebnis ein binäres Verzeichnis, wie das unter binärer Installation beschriebene.

Eine Source-Installation ist nur Benutzern mit großer Erfahrung in der Installation und Kompilation von Programmen zu empfehlen, die genug Zeit und Geduld haben, die zahlreichen Probleme anzugehen, die zweifelslos während des Prozesses entstehen..

 

Erste Schritte. Administration (Sicherheit)

Nach der Installation auf dem Server in deinem System nach einer der beiden beschriebenen Methoden sollte das Verzeichnis :

/usr/local/mysql-3.20.32a-pc-linux-gnu-i586

diese Dateien und Verzeichnisse enthalten:

-rw-r--r-- 1 root root 4133 Oct 1 1997 INSTALL-BINARY
-rw-r--r-- 1 root root 16666 Oct 7 21:10 INSTALL-SOURCE
-rw-r--r-- 1 root root 24088 Oct 27 23:06 NEWS
-rw-r--r-- 1 root root 3562 Apr 11 1997 PORTING
-rw-r--r-- 1 root root 8512 May 21 1997 PUBLIC
-rw-r--r-- 1 root root 1963 Jul 31 1997 README
-rw-r--r-- 1 root root 3416 Jun 4 1997 TODO
drwxr-xr-x 6 root root 8192 Oct 28 00:44 bench
drwxr-xr-x 2 cuenta1 users 8192 Mar 27 00:42 bin
drwxr-xr-x 5 root root 8192 Mar 31 00:26 data
drwxr-xr-x 2 root root 8192 Oct 28 00:44 include
drwxr-xr-x 2 root root 8192 Oct 28 00:44 lib
-rw-r--r-- 1 root root 132883 Jun 8 1997 mysql-faq.html
-rw-r--r-- 1 root root 117622 Jun 10 1997 mysql-faq.txt
-rw-r--r-- 1 root root 9301 Jun 8 1997 mysql-faq_toc.html
drwxr-xr-x 4 root root 8192 Oct 28 00:44 mysqlperl
drwxr-xr-x 2 root root 8192 Oct 28 00:44 scripts
drwxr-xr-x 3 root root 8192 Oct 28 00:44 share
drwxr-xr-x 2 root root 8192 Oct 28 00:44 tests

Für weitere Informationen über die Installation auf dem Server schau in die Dateien README, TODO, INSTALL, mysql-faq, etc., die sehr vollständig und gut sind (ein Teil dieses Artikels basiert auf ihnen).

Das Verzeichnis /data bekommt alle Datenbanken, die du auf deinem System erzeugst, sie werden in verschiedenen Unterverzeichnissen gespeichert. Die anfängliche Installation erzeugt per default die Archive, die die Sicherheitsfeatures im Server unterstützen, diese Datenbank ist “mysql”.

In /bench gibt es einige SQL Beispiele. Beachte, daß die Installationen vom Quellcode eine größere Menge an Beispielen enthalten als die binären Installationen.

Jetzt enthält das Verzeichnis /share die Fehlermeldungen für den Server in allen verfügbaren Sprachen.

/include und /lib enthalten die header Dateien und die Bibliotheken der Distributionen.

Wie erwartet, enthält /bin alle ausführbaren Programme, die wichtigsten darunter sind:


`mysql'

Eine SQL Shell (mit GNU Lesezeile). Es kann interaktiv genutzt werden, muß es aber nicht.


`mysqladmin'

Administrationswerkzeuge. Create (Erzeuge)/Delete (Lösche) Datenbanken. Informationen über Prozesse und die Version.


`mysqld'

SQL “deamon” .Es muß immer laufen.


`mysqlshow'

Zeigt Informationen über Datenbanken, Tabellen und Felder.


`safe_mysqld'

startet “mysqld”.


`mysqlaccess'

Script, um die Privilegien einer Kombination aus Host, Benutzer und Datenbank zu prüfen.


`mysqlbug'

wird benutzt, um über mögliche Bugs, die auf dem Server gefunden wurden, zu berichten.


`mysql_install_db'

Erzeugt riesige Tabellen mit default Privilegien, man läßt es normalerweise nach der ersten Installation eines neuen Systems laufen.


`isamchk'

Überprüft, optimiert und repariert Tabellen.

Sicherheit

Das Sicherheitssystem von MySQL garantiert, daß jeder Benutzer nur streng autorisierte Aufgaben ausführen kann (nicht mehr und nicht weniger).

Das System wählt die Privilegien für eine Transaktion nach dem Muster “WELCHER BENUTZER” von “WELCHEM HOST” ist verbunden mit einer “GEGEBENEN DATENBANK”. Das Erlaubnissystem basiert auf den Inhalten von drei Tabellen, “USER”, “HOST” und “DB” der Datenbank “mysql”.


Die Spalten dieser drei Tabellen sind:

Database: mysql
Tables
db
host
user


Table: db
Field Type Null Key Default Extra
Host char(60)   PRI    
Db char(32)   PRI    
User char(16)   PRI    
Select_priv char(1)     N  
Insert_priv char(1)     N  
Update_priv char(1)     N  
Delete_priv char(1)     N  
Create_priv char(1)     N  
Drop_priv char(1)     N  

Table: host
Field Type Null Key Default Extra
Host char(60)   PRI    
Db char(32)   PRI    
Select_priv char(1)     N  
Insert_priv char(1)     N  
Update_priv char(1)     N  
Delete_priv char(1)     N  
Create_priv char(1)     N  
Drop_priv char(1)     N  

Table: user
Field Type Null Key Default Extra
Host char(60)   PRI    
User char(16)   PRI    
Password char(16)        
Select_priv char(1)     N  
Insert_priv char(1)     N  
Update_priv char(1)     N  
Delete_priv char(1)     N  
Create_priv char(1)     N  
Drop_priv char(1)     N  
Reload_priv char(1)     N  
Shutdown_priv char(1)     N  
Process_priv char(1)     N  
File_priv char(1)     N  

Es kann entschieden werden, ob ein Benutzer zum Benutzen von den Befehlen SELECT, INSERT, UPDATE, und DELETE von Dateien in einer Tabelle autorisiert werden soll.

Es ist auch möglich, das Erzeugen (CREATE) oder Löschen (DROP) von Tabellen oder Datenbanken zu erlauben.

Interessant ist auch, daß Rechte für administrative Befehle wie “shutdown”, “reload”, “process”, etc... vergeben werden können.

Was für die Benutzer aktuell erlaubt ist, kann mit dem Script “mysqlaccess” inspiziert werden.

Ein HOST muß immer ein “local host ”, eine IP Nummer oder ein SQL Ausdruck sein. Wenn in der Tabelle “db” die host Spalte leer ist, bedeutet das jeder host in der Tabelle von “host”. Wenn dagegen in der Tabelle “host” oder “user” die Spalte host leer ist, dann heißt das, daß jeder HOST eine TCP Verbindung mit unserem Server aufbauen kann.

Db ist der Name der Datenbank.

Eine leere “USER” Spalte bedeutet irgendein Benutzername.

Erste Schritte

Der schnellste Weg, den Server zu starten, ist der folgende Befehl:

mysql.server start

und ihn zu stoppen :

mysql.server stop

Dieselben Operationen können auch mit dem Script safe_mysql ausgeführt werden, wie im Installationshandbuch beschrieben, aber der eine wie der andere Weg führt dazu, daß die Datei den deamon “mysqld” ausführt.

Wie leicht verstanden werden kann, ist es notwendig, den Server zu starten, um irgendeine Operation mit der Datenbank durchzuführen; mit dem laufenden Server können wir Operationen wie “mysqladmin” laufen lassen, deren Syntax wie folgt ist:

mysqladmin [OPTIONEN] Befehl Befehl …

wobei OPTIONEN das folgende sein kann:

-f, --force zwingt den Benutzer nicht zum Bestätigen, wenn eine Tabelle gelöscht wird.
-?, --help zeigt das aktuelle Hilfemenü.
-h, --host=# Verbindung zum host.
-p, --password[=...] Zutrittspasswort zum Server.
-P --port=... Portnummer, die für die Verbindung benutzt wird.
-S --socket=... Socketdatei,wird für die Verbindung benutzt
-u, --user=# Benutzer für die Verbindung, wenn es nicht der jetzige Benutzer ist.
-V, --version Zeigt Informationen über die laufende Serverversion

wobei Befehl eines oder mehreres der folgenden sein kann: