Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Leitfaden für die Nutzung des Buchs und der beiliegenden DVDs
Das Terminal – sinnvoll oder überflüssig?
1 Die Wurzeln von Ubuntu
2 Was ist Ubuntu?
3 Die Versionen im Detail
4 Daten sichern, migrieren und synchronisieren
5 Die Installation
6 Erste Schritte
7 Kubuntu
8 Programme und Pakete installieren
9 Internet und E-Mail
10 Office
11 Grafik und Bildbearbeitung
12 Multimedia
13 Programmierung und Design
14 Software- und Paketverwaltung
15 Architektur
16 Backup und Sicherheit
17 Desktop-Virtualisierung
18 Serverinstallation
19 Administration und Monitoring
20 Netzwerke
21 LAN-Server – im Firmennetzwerk oder als Multimediazentrale
22 Der Server im Internet
23 Servervirtualisierung mit KVM
24 Servervirtualisierung mit Xen
25 Hilfe
26 Befehlsreferenz
A Mark Shuttleworth
Stichwort

Download:
- ZIP, ca. 50,6 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Ubuntu GNU/Linux von Marcus Fischer
Das umfassende Handbuch, aktuell zu Ubuntu 11.04 »Natty Narwhal«
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
geb., mit 2 DVDs
1118 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1765-1
Pfeil 22 Der Server im Internet
  Pfeil 22.1 Apache
    Pfeil 22.1.1 Konfiguration
    Pfeil 22.1.2 Test per Browser
  Pfeil 22.2 Datenbankserver
    Pfeil 22.2.1 Allgemeines zu MySQL
    Pfeil 22.2.2 Installation
    Pfeil 22.2.3 Benutzerverwaltung
    Pfeil 22.2.4 Befehlsstruktur und Kürzel
    Pfeil 22.2.5 Datenbanken/Tabellen erstellen und verwalten
    Pfeil 22.2.6 Datentypen
    Pfeil 22.2.7 Daten einfügen
  Pfeil 22.3 FTP-Server
    Pfeil 22.3.1 ProFTP
    Pfeil 22.3.2 FTP im Terminal nutzen
  Pfeil 22.4 WebDAV
    Pfeil 22.4.1 Grundlagen
    Pfeil 22.4.2 Konfiguration
  Pfeil 22.5 E-Mail-Versand
  Pfeil 22.6 Openfire – Jabber-Instant-Messaging-Server


Galileo Computing - Zum Seitenanfang

22.2 Datenbankserver  Zur nächsten ÜberschriftZur vorigen Überschrift

Datenbankserver sind existentielle Komponenten jeder modernen Webanwendung. Der am weitesten verbreitete und beliebteste Open-Source-Datenbankserver und ist in der jeweils aktuellen Version in Ubuntu enthalten.

Datenbankserver ermöglichen anderen Anwendungen oder Serverdiensten Zugriff auf Datenbanken. Dies kann bei Bedarf über lokale Netzwerke oder auch über das Internet erfolgen. Unter Ubuntu können Sie problemlos zwei der wichtigsten Open-Source-Datenbankserver nutzen:

  • MySQL
    MySQL ist ein SQL-Datenbankverwaltungssystem der schwedischen Firma MySQL AB. Da es grundsätzlich kostenlos ist, wird die Weiterentwicklung durch kostenpflichtigen Support und durch kommerzielle Lizenzen ermöglicht. Letztere erlauben beispielsweise die Integration von MySQL in kommerzielle Software.
    • MySQL ist als Open-Source-Software für verschiedene Betriebssysteme verfügbar und bildet die Grundlage vieler Webauftritte. In Verbindung mit dem Apache-Webserver bietet die Verwendung der Datenbank MySQL ein professionelles Webserver-Umfeld. Die gesamte Technik fand man bis vor Kurzem noch unter der Sammelbezeichnung LAMP (Linux-Apache-MySQL-PHP), mittlerweile ist man zur Bezeichnung XAMPP (X-Apache-MySQL-PERL-PHP) übergegangen. Das X soll signalisieren, dass Sie die gleiche Softwarekombination auch unter Windows realisieren können; dort war früher die Bezeichnung WAMP (Windows-Apache-MySQL-PHP) üblich.
  • PostgreSQL
    PostgreSQL (www.postgresql.org) ist ebenfalls ein relationales Datenbankmanagementsystem, das an der Universität von Kalifornien entstand und seit Ende der 1990er Jahre von einer Open-Source-Community weiterentwickelt wird. PostgreSQL ist weitgehend konform zu den SQL-Standards und glänzt durch zahlreiche optionale Zusatzmodule, mit denen der Benutzer die Datenbanken seinen Bedürfnissen entsprechend anpassen kann.

Aus Platzgründen werde ich mich auf den folgenden Seiten ausschließlich mit MySQL beschäftigen. Die hier erworbenen Kenntnisse können Sie aber relativ problemlos auch auf PostgreSQL anwenden.

Datenbanken sind oft notwendig für das Bereitstellen von Internetseiten. So erfordert sowohl der Betrieb eines Forums als auch der Einsatz von sogenannten Content-Management-Systemen zwingend das Vorhandensein einer Datenbank. Häufig wird für diesen Zweck MySQL eingesetzt.


SQL: Structured Query Language. Eine deklarative Datenbanksprache für relationale Datenbanken. Die Sprache ist standardisiert und wird beispielsweise für die Abfragen der Daten aus den Tabellen verwendet (siehe unten). Entwickelt wurde die Sprache in den 1970er Jahren von Edgar F. Codd. Wie fast jedes Datenbanksystem besitzt auch MySQL seinen eigenen SQL-Dialekt mit spezifischen Erweiterungen.



Galileo Computing - Zum Seitenanfang

22.2.1 Allgemeines zu MySQL  Zur nächsten ÜberschriftZur vorigen Überschrift

MySQL stellt eine relationale Datenbank zur Verfügung und verwendet somit ein Tabellenmodell zum Ablegen von Daten, wobei die verschiedenen Informationskategorien in Spalten geordnet sind. Jede Zeile stellt einen Datensatz (englisch record) dar, während die einzelnen ZellenDatenfelder genannt werden. Die Datenfelder sind die kleinsten Informationseinheiten – sie sind atomar – und sollen daher jeweils nur ein Element (englisch entity – »Entität«) spezifizieren. Diese kleine Einschränkung ist substanziell für das Funktionieren einer relativen Datenbank.

Normalisieren

Redundanzen sind unbedingt zu vermeiden. So sollten Sie beispielsweise den Namen eines Kunden unbedingt in die beiden Entitäten Vorname und Name aufteilen. Der Vorgang zur Vermeidung von Inkonsistenzen wird als Normalisierung der Datenbank bezeichnet.


Tabelle 22.1  Grundsätzliche Tabellenstruktur für relationale Datenbanken

Entität 1 Entität 2

Datensatz A

Datensatz B


Relationen

Eine relationale Datenbank besteht schließlich aus beliebig vielen dieser Tabellen, die durch Beziehungen oder Relationen miteinander verknüpft sind. Eine Relation besteht durch die Verwendung von Schlüsseln:

  • Primärschlüssel
    Der Primärschlüssel des Datensatzes einer Tabelle wird als Wert in ein Feld einer anderen Tabelle eingetragen. Der Primärschlüssel ist hierbei entweder ein spezielles Datenfeld oder eine Kombination von Werten mehrerer Felder. Dabei müssen diese Felder einen einmaligen Wert besitzen und den Datensatz eindeutig kennzeichnen. Dieser Aufbau ist grundlegend dafür, dass die Datenbank konsistent ist.
  • Fremdschlüssel
    Der Primärschlüssel einer Tabelle, auf den in einer anderen Tabelle verwiesen wird, heißt dort Fremdschlüssel.

Es handelt sich bei Relationen grundsätzlich um sogenannte m:n-Relationen. Dabei werden beliebig viele Vorkommen von bestimmten Werten miteinander kombiniert.


1:1 und 1:n: Diese beiden Spezialfälle verknüpfen entweder einen Datensatz einer Tabelle mit genau einem Datensatz (1:1) oder mit beliebig vielen anderen Datensätzen einer anderen Tabelle (1:n).


Beispiel: Webshop

Wir werden diese Theorie anhand eines Beispiels näher erkunden. Versetzen Sie sich hierzu in die Lage eines Webshop-Betreibers. Sie wollen eine relationale Datenbank verwenden, um Ihre Kunden- und Verkaufszahlen zu organisieren. In diesem einfachen Beispiel benutzen wir drei Tabellen:

  • Eine Tabelle enthält Daten über die Käufer (siehe Tabelle),
  • eine zweite Informationen über die vorhandenen Artikel (siehe Tabelle),
  • in der dritten schließlich werden die einzelnen Käufe aufgelistet (siehe Tabelle).

Tabelle 22.2  Beispiel: Kundendaten – der Primärschlüssel ist das Element »Nr.«

Nr. Name Vorname Geburtsdatum Wohnort

1

Müller

Hans

20.07.1952

Köln

2

Schulz

Heinrich

11.01.1963

München

3

Schröder

Martin

13.05.1976

Siegen

4

Kollau

Michael

27.03.1981

Bonn


In die Tabelle sind alle Informationen über die vorhandenen Artikel aufgelistet. In der Spalte »MwSt.« werden nur zwei Werte verwendet, entweder 7 oder 19. Daher bietet es sich an, diese Werte durch 1:1-Relationen mit einer anderen Tabelle zu verknüpfen. Diese weitere Tabelle würde etwaige Änderungen an der Mehrwertsteuer direkt in die anderen Tabellen einfließen lassen. Die Preise werden in der Tabelle übrigens in Cent angegeben.


Tabelle 22.3  Nr.«

Art.-Nr. Bezeichnung Preis [Cent] MwSt

1

Brot

179

7

2

Margarine

79

7

3

Conflakes

299

7

4

Duschgel

349

19


Die dritte Tabelle enthält schließlich die Käufe, die die Kunden aus der Tabelle tätigen. Abhängig von der Größe dieser Tabelle ist sie selbstverständlich viel zu schwer zu lesen. Die Lesbarkeit steht aber auch nicht an erster Stelle, sondern die »Abfragefähigkeit«, die sich durch eine eindeutige Zuordnung aller Werte auszeichnet.


Tabelle 22.4  Beispiel: Käufe – der Primärschlüssel ist das Element »Kauf-Nr.«

Kauf-Nr. Nr. Art.-Nr. Stück Datum

1

2

4

2

2010-07-08

2

1

2

1

2010-07-12

3

3

4

3

2010-07-12

4

1

3

7

2010-07-14


Auswahlabfragen

Die Tabellen sind in dieser Form für Menschen nur schwer lesbar, obwohl sie mit einer wahren Informationsfülle dienen können. Lesbare Ausgaben entstehen aber erst durch Abfragen dieser Tabellen. Hierzu beherrschen relationale Datenbanken sogenannte Auswahlabfragen, mit denen anhand der Relationen Daten aus verschiedenen Tabellen zusammengestellt werden. Die Tabelle zeigt das Ergebnis einer solchen Abfrage.


Tabelle 22.5  Beispiel: das Ergebnis einer Auswahlabfrage

Kauf-Nr. Nr. Art.-Nr. Stück Gesamtpreis

1

2

4

2

698

2

1

2

1

79

3

3

4

3

1047

4

1

3

7

2093


Bemerkenswert ist die Dynamik bei relationalen Datenbanken. Das Ergebnis wird normalerweise nicht gespeichert, da es nur eine Zusammenstellung der Tabellenwerte darstellt. Da sich diese Werte aber jederzeit ändern können, unterliegt das Abfrageergebnis einer gewissen Dynamik.


Galileo Computing - Zum Seitenanfang

22.2.2 Installation  Zur nächsten ÜberschriftZur vorigen Überschrift

Sie installieren MySQL über die Pakete mysql-server und mysql-client. Dies installiert Ihnen automatisch die neueste aktuelle Version von MySQL:

sudo apt-get install mysql-server mysql-client

Hierbei werden auch einige Client- und Perl-Pakete installiert, da erst diese den Zugriff auf die Datenbank gewährleisten.


Tipp 267: Separate MySQL-Partition bei LVM

Wenn Sie Ihre Festplatte mit LVM partitioniert haben, ist es sinnvoll, eine separate Partition für das Verzeichnis /var/lib/mysql einzurichten. Dies erleichtert beispielsweise die Wartung und Sicherung Ihrer Datenbanken.


Sicherheit

MySQL kommuniziert nach der Installation im Netzwerk über den Port 3306 und lässt sich über die Datei /etc/mysql/my.cnf konfigurieren. Stellen Sie also sicher, dass Ihre Firewall diesen Port nicht sperrt, oder schließen Sie ihn explizit, wenn Sie die Kommunikation nach außen verhindern möchten.


Tipp 268: MySQL-Logging und Kommunikation mit anderen Rechnern

Unter Ubuntu sind merkwürdigerweise so gut wie alle Logging-Funktionen standardmäßig deaktiviert. So müssen Sie sogar das General Query Log manuell aktivieren. Dies geschieht mit der Funktion log in der MySQL-Konfigurationsdatei /etc/mysql/my.cnf. Das Fehlerprotokoll lässt sich nicht abschalten und wird unter dem neuen distributionsübergreifenden Standardpfad /var/log/syslog geführt.

Der MySQL-Server ist standardmäßig unter Ubuntu recht isoliert – Netzwerkverbindungen von außen (über Port 3306) sind gesperrt. Wenn also auch andere Rechner mit dem Server kommunizieren wollen, müssen Sie dies explizit erlauben. Zuständig hierfür ist die Option bind-adress in der bereits genannten Konfigurationsdatei, die standardmäßig nur localhost den Zugriff gestattet: bind-adress=127.0.0.1. Löschen Sie gegebenenfalls diese Zeile, und starten Sie den MySQL-Server durch

service mysql restart

neu.


Direkt nach der Installation müssen Sie ein Passwort für den MySQL-Benutzer root angeben. Dieser Benutzer hat – wie der Name schon vermuten lässt – umfassende administrative Rechte und besitzt vollständigen Zugriff auf alle Datenbanken. In der täglichen Arbeit sollten Sie sich allerdings weitere MySQL-Benutzer anlegen, die weniger Rechte und beispielsweise lediglich Zugriff auf bestimmte Datenbanken haben.


Tipp 269: MySQL aus PHP heraus verwenden

Es ist oftmals praktisch, MySQL von PHP aus zu verwenden. Um dies zu ermöglichen, ist die Installation des Pakets php5-mysql nötig:

sudo apt-get install php5-mysql

Dieses Paket enthält die notwendigen PHP-Erweiterungen mysql und mysqli sowie den MySQL-Treiber für die Datenbankschnittstelle des Projekts.


Automatischer Start

Wie bei allen anderen Diensten auch, können Sie den automatischen Start von MySQL durch das Werkzeug chkconfig beeinflussen. Der Funktionskern des Datenbankservers ist der MySQLDaemon (mysqld) in Verzeichnis /usr/sbin/mysqld. Dieser wird wiederum durch das Startskript /etc/init.d/mysql gesteuert. Den automatischen Start können Sie selbstverständlich mit Hilfe von chkconfig steuern. Sie aktivieren MySQL durch

chkconfig -a mysql

Anmelden und Konfiguration

Die Verwaltung gelingt am effektivsten über den Kommandozeilenclient mysql. Sie starten den Client durch Eingabe von mysql im Terminal. Der Standardbenutzer ist unter Ubuntu root@localhost, wobei die MySQL-Nutzer normalerweise nicht mit den schon vorhandenen Systemnutzern identisch sind.

Das Anmelden in Ihr MySQL-System gelingt mit Hilfe folgender Syntax:

mysql -u Benutzername -p

Wenn Sie während der Installation von MySQL ein Passwort gesetzt haben, gelingt das Anmelden durch den Befehl

mysql -u root mysql -p

und Eingabe Ihres MySQL-Passworts.

Anmelden auf einem entfernten Server

Falls der MySQL-Server sich auf einem anderen Rechner im Netzwerk oder im Internet befindet, verwenden Sie die Option -h Hostname oder --host Hostname, beispielsweise

mysql -u root -h server -p

Galileo Computing - Zum Seitenanfang

22.2.3 Benutzerverwaltung  Zur nächsten ÜberschriftZur vorigen Überschrift

Wie Sie an dem MySQL-Standardbenutzer erkennen, ist es möglich, dass Sie sich als Root anmelden, ohne dass Sie dies im System sein müssen. Dies stellt auf Dauer ein ernsthaftes Sicherheitsproblem dar, das Sie durch Vergabe eines Passworts vermeiden können.

Passwort – ja oder nein?

Während der Installation werden Sie aufgefordert, ein Root-Passwort einzugeben, Sie können dieses Feld allerdings auch leer lassen. Wenn Sie allerdings planen sollten, das System in einen produktiven Server zu überführen, dann sollten Sie das Administratorpasswort unbedingt setzen! Sie können dies natürlich auch jederzeit nachholen, indem Sie sich in Ihren MySQL-Server einloggen:

mysql -u root mysql

In der MySQL-Konsole geben Sie folgende Kommandos ein:

mysql> update user set Password=password(.... neues Passwort...) where user='root';
mysql> flush privileges;
mysql> quit

Um den Vorgang zu überprüfen, können Sie folgenden Befehl ausführen, um sich an Ihrer lokalen MySQL-Datenbank anzumelden:

mysql -u root -p

Wenn das neue Passwort korrekt gesetzt und eingegeben wurde, sind Sie nach Eingabe desselben mit Ihrer MySQL-Datenbank verbunden.

Keine leeren Benutzernamen oder fehlende Paswörter!

Aus Sicherheitsgründen sollten Sie sichergehen, dass es keine Anmeldemöglichkeiten mit leerem Benutzernamen oder ohne Passwort in Ihrem MySQL-System gibt. Bei Ubuntu gibt es – im Gegensatz zu anderen Distributionen – standardmäßig keine solchen Nutzer. Dennoch sollten Sie regelmäßig die Nutzerdatenbank kontrollieren. Dies gelingt durch die folgende Abfrage, die das folgende Ergebnis (Empty set) ausgeben sollte:

mysql> SELECT user, host, password
    -> FROM mysql.user
    -> WHERE user="" OR password="";
Empty set (0.00 sec)

Benutzer entfernen

Um einen Nutzer zu löschen, verwenden Sie die Abfrage DELETE FROM. Um beispielsweise alle Nutzer mit leerem Benutzernamen oder leerem Passwort zu löschen, können Sie die Abfrage folgendermaßen nutzen:

mysql> DELETE FROM mysql.user
    -> WHERE user="" OR password="";

Passwörter ändern

Zum Ändern eines beliebigen Passworts verwenden Sie die Abfrage SET PASSWORD FOR. Für den Benutzer marcus lautet der Befehl folgendermaßen:

mysql> SET PASSWORD FOR
    -> marcus@localhost=PASSWORD("Passwort");

Galileo Computing - Zum Seitenanfang

22.2.4 Befehlsstruktur und Kürzel  Zur nächsten ÜberschriftZur vorigen Überschrift

Wie Sie an den oben genannten Zeilen erkennen, müssen Sie innerhalb von MySQL jedes Kommando durch ein Semikolon abschließen. Ohne dieses Abschlusszeichen wechseln Sie nur die Zeile, so dass es möglich ist, längere Anweisungen übersichtlich auf mehrere Zeilen zu verteilen. Eine Ausnahme bei dieser Vorgehensweise mittels eines Abschlusszeichens stellen die internen Kürzel dar, die in der Tabelle aufgelistet sind.

Kürzel

Jede MySQL-Anweisung besitzt ein Kürzel. Bei denjenigen, die eine SQL-Anweisungszeile abschließen oder modifizieren, müssen Sie dieses Kürzel sogar standardmäßig verwenden. Wenn Sie aus irgendeinem Grund keine Kürzel benutzen möchten, müssen Sie beim Anmelden den Parameter --named-commands voranstellen.


Tabelle 22.6  Übersicht über wichtige Befehlskürzel

Kürzel Befehl Bedeutung

\ q

exit oder quit

Mit diesem Kürzel melden Sie sich aus dem MySQL-System ab.

\ h oder \ ? oder ?

help

Dieses Kürzel liefert eine Übersicht aller internen Anweisungen.

\ d Zeichenfolge

delimiter Zeichenfolge

Statt des Semikolons wird die angegebene Zeichenfolge als Abschluss verwendet. Dies kann sinnvoll sein, wenn Semikola für andere Zwecke verwendet werden müssen, beispielsweise für automatisierte SQL-Befehlsabfolgen.

\ g

go

Dieses Kürzel können Sie statt des Semikolons verwenden. Dies ist praktisch, wenn Sie dem Semikolon durch \ d eine andere Bedeutung gegeben haben.

\ G

ego

Mit diesem Kürzel wird die aktuelle Eingabe beendet, und es erfolgt eine Darstellung aller eventuellen Ergebnisse in Tabellenform.

\ c

clear

Dieses Kürzel bricht die Eingabe einer Anweisung ab, ohne diese auszuführen.

\ .

source Dateipfad

Das Kürzel führt den Inhalt der angegebenen Datei als SQL-Anweisung aus.

\ ! Befehl

system Befehl

Dieses Kürzel führt den angegebenen Befehl aus, beispielsweise \ ! clear zum Löschen des Bildschirms.

\ T Dateipfad

tee Dateipfad

Mit diesem Kürzel werden alle Ein- und Ausgaben in die angegebene Protokolldatei geschrieben.

\ t

notee

Dieses Kürzel beendet die Protokollierung (siehe T) wieder.

\ u Datenbank

use Datenbank

Die angegebene Datenbank wird als Standard festgelegt. Dadurch ist es möglich, auf Tabellen dieser Datenbank zuzugreifen, ohne Datenbank.Tabelle schreiben zu müssen. Weiterhin werden neue Tabellen automatisch in dieser Datenbank angelegt.

\ s

status

Mit diesem Befehl können Sie sich den Status IhresMySQL-Servers anzeigen lassen.


Selbstverständlich gibt es eine Vielzahl weiterer Befehle. In die Tabelle habe ich Ihnen einige sehr nützliche Befehle aufgelistet, die Ihnen das Leben mit dem MySQL-Client erleichtern. Die Befehle werden nur übersichtshalber in Großbuchstaben geschrieben – Sie können aber selbstverständlich auch Kleinbuchstaben verwenden. Bei Datenbank- und Tabellennamen wird allerdings zwischen Groß- und Kleinschreibung unterschieden.


Tabelle 22.7  Einige nützliche MySQL-Befehle

Befehl Wirkung

SHOW DATABASES

Zeigt eine Liste aller vorhandenen Datenbanken an.

SELECT DATABASE()

Zeigt an, welche Datenbank gerade als Standard ausgewählt ist.

SHOW TABLES

Listet alle Tabellen der aktuellen Datenbank auf.

SHOW TABLES FROM db

Im Gegensatz zum vorigen Befehl werden alle Tabellen der angegebenen Datenbank db angezeigt.



Galileo Computing - Zum Seitenanfang

22.2.5 Datenbanken/Tabellen erstellen und verwalten  Zur nächsten ÜberschriftZur vorigen Überschrift

In diesem Abschnitt stelle ich Ihnen die wichtigsten SQL-Anweisungen zum Erstellen von Datenbanken und Tabellen vor. Des Weiteren lernen Sie, wie Sie ausgewählte Informationen abrufen sowie Daten und Strukturen verändern. Bei der Verwendung der hier vorgestellten Abfragen haben Sie zwei Möglichkeiten der Nutzung:

  • Sie haben in den vorangegangenen Abschnitten bereits den Kommandozeilenclient mysql kennengelernt. Dieser stellt auf eine bequeme und sehr schnelle Art der Verwaltung dar. Allerdings sollten Sie daran denken, dass Sie jeden Befehl mit einem Semikolon abschließen müssen.
  • Eine sehr bequeme Art der Verwaltung stellen grafische Clients wie beispielsweise das webbasierte phpMyAdmin dar. Auch wenn Ihr Server keine grafische Oberfläche besitzt, können Sie mit diesem Werkzeug von einem beliebigen Client aus grafisch auf Ihre MySQL-Konfiguration zugreifen. Sie erfahren mehr über phpMyAdmin in dem Tipp »Grafische Verwaltung mit phpMyAdmin«.

Wir haben bereits am Anfang dieses Abschnitts die Grundlagen einer relationalen Datenbank besprochen. Daher behandele ich hier in schnellen Schritten die Grundlagen der MySQL-Syntax.

Eine neue Datenbank erstellen

Die grundlegende SQL-Anweisung zur Erstellung einer neuen MySQL-Datenbank lautet:

CREATE DATABASE datenbankname

Eine Datenbank »lebt« quasi von den zugrundeliegenden Tabellen. Daher nehmen Sie an diesen Tabellen auch die meisten Konfigurationen vor. Die eigentliche Datenbank kennt nur wenige Parameter, die Sie durch Optionen beeinflussen können. Eine Übersicht der wichtigsten Optionen bei der Erstellung einer neuen Datenbank finden Sie in der Tabelle.

Sie erstellen mit Hilfe der folgenden Anweisung eine Datenbank namens rezepte mit dem Zeichensatz latin1 und der Sortierfolge Deutsch (Wörterbuch) und stellen sicher, dass eine Datenbank mit diesem Namen noch nicht existiert:

CREATE DATABASE IF NOT EXISTS rezepte CHARACTER SET latin1
COLLATE latin1_german1_ci

Tabelle 22.8  Optionen beim Erstellen einer Datenbank

Befehl Wirkung

[DEFAULT] CHARACTER SET Zeichensatz

Diese Anweisung definiert den Zeichensatz für die Tabellen der aktuellen Datenbank. Standardmäßig ist dies latin1 und sollte für deutschsprachige Inhalte nicht verändert werden. Eine Übersicht aller verfügbaren Zeichensätze erhalten Sie mit Hilfe des Befehls SHOW CHARACTER SET im MySQL-Client.

COLLATE Sortierfolge

Diese Anweisung legt die Sortierfolge (Kollation) für Ihre Textinhalte fest. Für die deutsche Sprache gibt es zwei mögliche Kollationen:

Der Zeichensatz latin1_german1_ci sortiert Text nach Wörterbuch, das heißt, Umlaute werden direkt nach ihren direkten Pendants einsortiert. Beispielsweise Männer hinter Mann.
Der Zeichensatz latin1_german2_ci sortiert hingegen den Text wie in einem Telefonbuch. Dies bedeutet, dass Umlaute wie beispielsweise »ä« mit »ae« gleichgesetzt werden.

IF NOT EXISTS

Diese Anweisung erstellt die angegebene Datenbank nur in dem Fall, dass der Name bisher für keine andere Datenbank verwendet wurde. Es ist notwendig, dass diese Anweisung dem System vor dem Namen der Datenbank gegeben wird.


Wenn Sie den Kommandozeilenclient verwenden, vergessen Sie nicht das Semikolon als Abschluss. Im nächsten Schritt sollten Sie diese neu angelegte Datenbank als Standard definieren, damit Sie mit ihr arbeiten können:

mysql> use rezepte

Diese Anweisung benötigt kein Semikolon, da es sich hierbei um einen internen Befehl handelt (siehe Tabelle).

Tabellen erstellen

Sie haben jetzt die Datenbank rezepte angelegt und können sie mit Leben füllen. Dies tun Sie, indem Sie beliebig viele Tabellen einrichten, die sämtliche Informationen einer relationalen Datenbank enthalten. Zu diesem Zweck gibt es den Befehl CREATE TABLE, dessen Syntax folgendermaßen aussieht:

CREATE TABLE tabellenname
(
   Spaltenname Datentyp [Optionen]
   Spaltenname Datentyp [Optionen]
)[Optionen]

Hinter der letzten Klammer, die die Auflistung der Spalten beendet, können Optionen für die gesamte Tabelle folgen. Die wichtigsten fasse ich in der Tabelle zusammen.


Tabelle 22.9  Tabellenoptionen

Option Bedeutung

CHARACTER SET Zeichensatz

Legt den Zeichensatz fest, der als Standard für diese Tabelle verwendet werden soll (ähnlich wie bei den Datenbanken).

COLLATE Sortierfolge

Legt die Sortierfolge fest, mit der Einträge in der Tabelle standardmäßig geordnet werden sollen (ähnlich wie bei den Datenbanken).

ENGINE=Tabellentyp

Mit dieser Option legen Sie den Typ (englisch: storage engine) der Tabelle fest:

Unter Ubuntu ist der Standardtyp MyISAM. Dieser Typ besitzt eine größere Leistungsfähigkeit als InnoDB.
Der Standardtyp bei Windows-Systemen ist InnoDB, der mehr Funktionen unterstützt. Vorsicht bei einem Systemwechsel: Es bietet sich an, den Standardtabellentyp immer explizit anzugeben!

Wir werden uns im Folgenden den Details widmen, wollen aber vorher noch eine Beispieltabelle erstellen, die zu unserer Datenbank rezepte passt. Wir geben bei der Erstellung gleichzeitig an, dass die Tabelle nur angelegt werden darf, wenn ihre Bezeichnung noch nicht verwendet wurde (ähnlich wie bei den Datenbanken):

CREATE TABLE IF NOT EXISTS rez_zutaten
(
   zut_id INT AUTO_INCREMENT,
   zut_name VARCHAR(40),
   zut_herkunft INT,
   zut_quelle VARCHAR(30),
   PRIMARY KEY (zut_id),
   INDEX (zut_name)
);

Wie Sie an dem obigen Beispiel erkennen, habe ich dieser Tabelle und allen Spalten ein gemeinsames Namenspräfix zugewiesen. Dies hat den Vowrteil, dass der Zusammenhang zwischen den Daten auf den ersten Blick deutlich wird. Des Weiteren haben Sie es hier mit eindeutigen Bezeichnungen zu tun. Bei einer Vielzahl von Datenbanken mit eventuell gleichartigen Spalten brauchen Sie sich so keine Sorgen um eventuell doppelt vorhandene Bezeichnungen zu machen.

Im obigen Beispiel haben wir unter anderem einige Anweisungen genutzt, die ich in der Tabelle näher erläutere. Statt des Datentyps VARCHAR können Sie beispielsweise auch die folgenden Typen nutzen:

  • Date kann ein beliebiges Kalenderdatum enthalten.
  • ENUM speichert einen Wert aus einer vorgegebenen Liste von Alternativen.

Tabelle 22.10  Tabelleninhalte

Anweisung Bedeutung

zut_id

Dies stellt den sogenannten Primärschlüssel dar. Hierbei handelt es sich um einen eindeutigen Wert, der den gesamten Datensatz repräsentiert und damit in anderen Tabellen als Verweis auf die jeweiligen Zutaten dienen kann. Der Datentyp dieser Spalte ist [INT] (Ganzzahl). Die Option AUTO INCREMENT sorgt dafür, dass die Felder dieser Spalte automatisch durchnummeriert werden.

zut_name

Dies definiert den genauen Namen der einzelnen Zutat. Hierbei soll die Bezeichnung vom Typ VARCHAR(40) sein, also ein String variabler Länge mit maximal 40 Zeichen.

zut_herkunft

Diese Spalte soll die Länder, aus denen die Zutaten kommen, enthalten. In diesem Fall wollen wir aber nicht die Namen der Länder speichern, sondern eine ganze Zahl. Diese wiederum verweist als sogenannter Fremdschlüssel auf eine weitere Tabelle, die die Namen der einzelnen Länder speichert.

zut_quelle

Dies definiert den Ort, an dem wir die einzelne Zutat erwerben können, also beispielsweise Wochenmarkt oder Supermarkt. Hierbei soll die Bezeichnung vom Typ VARCHAR(30) sein, also ein String variabler Länge mit maximal 30 Zeichen.


Wenn Sie eine Tabelle erzeugt haben, können Sie sich mit Hilfe des Kommandozeilenclients ihre Struktur ausgeben lassen. Zu diesem Zweck nutzen Sie den Befehl:

DESCRIBE rez_zutaten

Um sämtliche Optionen anzuzeigen, die aufgrund von Standardeinstellungen der übergeordneten Datenbank oder des Servers selbst zustande kommen, dient der Befehl:

SHOW CREATE TABLE rez_zutaten \G

Index

Auf das Feld zut_name habe ich einen einfachen Index gesetzt. Einen solchen Index können Sie sich genauso vorstellen wie den alphabetischen Index am Ende dieses Buchs. Ein Index speichert die verschiedenen Werte eines Feldes erneut, zusammen mit den Stellen, an denen diese Werte in der Tabelle vorkommen. In unserem Fall beschleunigt der Index die Suche und das Sortieren nach Zutatennamen.

Achtung Beachten Sie bitte, dass Indizes die Größe Ihrer Tabellen vervielfachen. Aus diesem Grund sollten Sie Indizes maßvoll einsetzen. Beschränken Sie sie auf Felder, nach denen häufig gesucht wird.


Galileo Computing - Zum Seitenanfang

22.2.6 Datentypen  Zur nächsten ÜberschriftZur vorigen Überschrift

Sie werden im Abschnitt »Daten einfügen«, lernen, wie Sie Daten in eine Tabelle einfügen. Vorher möchte ich aber noch einige Worte zu den verwendbaren Datentypen verlieren. Für unterschiedliche Arten von Daten gibt es jeweils andere Datentypen:

  • Numerische Datentypen
    Diese Art von Datentypen lassen sich in zwei Gruppen unterteilen:
  • Integertypen
    Die Integertypen speichern ganze Zahlen mit unterschiedlicher Bitbreite, aus der sich der speicherbare Wertebereich ergibt. Wenn Sie zu große oder zu kleine Werte in eine Spalte mit Integer-Datentyp eingeben, wird der größt- bzw. kleinstmögliche Wert verwendet.

Tabelle 22.11  Mögliche Integer-Werte

Datentyp Bit Wertebereich Unsigned-Wertebereich

TINYINT

8

–128 bis +127

0 bis 255

SMALLINT

16

–32.768 bis 32.767

0 bis 65.535

MEDIUMINT

24

–8.388.608 bis +8.388.607

0 bis 16.777.215

INT

32

–2.147.483.648 bis +2.147.483.647

0 bis 4.294.967.295

BIGINT

64

–9.223.372.036.854.775.808 bis +9.223.372.036.854.775.807

0 bis 18.446.744.073.709.551.615


  • Fließkommazahlen
    Für Fließkommazahlen stehen Ihnen zwei Typen zur Verfügung: FLOAT mit 32 Bit und DOUBLE mit 64 Bit. Der Unterschied zwischen den beiden Typen liegt in der Anzahl der möglichen Stellen, also in der Genauigkeit. Die englische Bezeichnung lautet übrigens Floating Point Numbers, und daran wird deutlich, dass Sie unbedingt Punkte statt Kommata verwenden müssen.
    • Eine Besonderheit ist der Datentyp DECIMAL(m,n), der eine Speichermöglichkeit für Festkommazahlen darstellt, bei der die Anzahl der Stellen definiert werden kann. So bedeutet die Schreibweise DECIMAL(5,2), dass Sie Werte zwischen –999.99 und 999.99 speichern können. Ein beliebter Anwendungsbereich für diesen Datentyp sind Währungsbeträge.
  • String-Datentypen
    Bei Strings gibt es zwei Datentypen:
    Pfeil  CHAR(n) Dieser Datentyp kann bis zu 255 Zeichen enthalten und belegt stets die bei der Definition angegebene Zeichenanzahl (n) – auch wenn der tatsächliche Inhalt kürzer ausfällt. Ein Feld mit der Definition CHAR(100) ist somit immer 100 Zeichen breit. Der Vorteil dieses Datentyps liegt in seiner Geschwindigkeit.
    Pfeil  VARCHAR(n) Dieser Datentyp verwendet im Gegensatz zum vorigen nur den Speicher, den die aktuell enthaltenen Zeichen benötigen. Ein Feld mit der Definition VARCHAR(100) bietet Platz für bis zu 100 Zeichen. Dieser Datentyp ist etwas langsamer, dafür aber platzsparender.
  • Datums- und Uhrzeitangaben
    MySQL stellt Ihnen eine Reihe von verschiedenen Formaten für Datum und Uhrzeit zur Verfügung. Im Einzelnen sind diese in der Tabelle dargestellt.

Tabelle 22.12  Datum- und Uhrzeittypen

Typ Bedeutung

DATETIME

Bei diesem Typ wird eine vollständige Zeitangabe aus Datum und Uhrzeit im Format JJJJ-MM-TT hh:mm:ss abgespeichert. Wenn Sie beim Einfügen von Werten auf die Uhrzeit verzichten, wird diese auf 00:00:00 gesetzt.

DATE

Dieser Typ enthält lediglich das Datum.

TIME

Dieser Typ enthält lediglich die Uhrzeit.

TIMESTAMP

Im Gegensatz zum Typ DATETIME werden die TIMESTAMP-Felder beim Einfügen und bei jeder Änderung mit der aktuellen Systemzeit aktualisiert.


  • Aufzählungstypen
    Die Aufzählungstypen sind nicht im SQL-Standard definiert und stellen eine Besonderheit von MySQL dar. Man unterscheidet hier zwischen den Typen ENUM und SET.

Galileo Computing - Zum Seitenanfang

22.2.7 Daten einfügen  topZur vorigen Überschrift

In den vorigen Abschnitten haben wir eine Datenbank erstellt und ihr mit Hilfe von Tabellen Leben eingehaucht. Ein Schönheitsfehler ist dennoch vorhanden, denn noch sind die Tabellen leer. Um also Werte in die vorhandenen Tabellen einzufügen, verwenden Sie die Anweisung INSERT. Die grundlegende Syntax sieht folgendermaßen aus:

INSERT INTO tabellenname (Spalte1, Spalte2, ...)
VALUES (Wert1, Wert2, ...),
       (Wert1, Wert2, ...)

Nach dem Schlüsselwort VALUES folgt der Datensatz, der in dieser Reihenfolge in die Tabelle eingefügt wird. Mehrere Datensätze können Sie durch Kommata getrennt eingeben.

Wenn Sie immer komplette Datensätze angeben, können Sie die Angabe der Spalten weglassen. Diese Angabe ergibt nur Sinn, wenn Sie eventuell lediglich einzelne Werte angeben möchten. Bei einer Tabelle, in deren erster Spalte eine ID vergeben wird (AUTO_INCREMENT), müssen Sie entweder die Spalten dennoch angeben oder dem ersten Feld den Wert NULL zuordnen. Als Beispiel fügen wir eine Zutat in unsere Tabelle rez_zutaten ein:

INSERT INTO rez_zutaten
VALUES (NULL, "Pfeffer", "Indien", "Supermarkt")

Wie Sie an dem obigen Beispiel sehen, gehören Strings sowie Datums- und Uhrzeitangaben in Anführungszeichen. Hierbei ist es bei MySQL egal, ob Sie einfache oder doppelte verwenden – ganz im Gegensatz zu anderen Datenbanken wie PostgreSQL. Der ANSI-SQL-Standard schreibt einfache Anführungszeichen vor, weil doppelte für Tabellen- und Spaltenbezeichnungen reserviert sind, in denen Leerzeichen vorkommen oder die genauso heißen wie offizielle SQL-Bezeichner.


Tipp 270: Grafische Verwaltung mit phpMyAdmin

Für den Einsatz in Verbindung mit der Datenbank MySQL empfiehlt sich die Installation des Pakets phpmyadmin. Durch Auswahl dieses Pakets wird das gesamte Spektrum der XAMP-Software installiert. Zusätzlich haben Sie mit dem Tool ein exzellentes Konfigurationswerkzeug zur Hand. Während der Installation wird gegebenenfalls die Konfiguration des zusätzlich benötigten postfix-Pakets angefordert, hier wählen Sie einfach no configuration. Wenn Sie diesem Kapitel bisher gefolgt sind, wählen Sie bei der Frage nach dem Webserver, der konfiguriert werden soll, Apache per Leertaste aus.

Der größte Vorteil von phpMyAdmin ist der Fakt, dass Sie das Programm über einen Webbrowser von jedem beliebigen Ort aus bedienen können. Dies ist insoweit etwas Besonderes, als die meisten (grafischen) Konfigurationsprogramme nur lokal ausgeführt werden können.

Die Frage, ob die Datenbank für phpMyAdmin mit dbconfig-common konfiguriert werden soll, sollten Sie mit Ja beantworten. Schließlich müssen Sie noch das Administratorpasswort und das Datenbankpasswort setzen. Nach der Installation geben Sie im Server die lokale IP-Adresse oder das Schlüsselwort http://localhost/phpmyadmin/ bzw. http://<hostname>/phpmyadmin/ an. Es öffnet sich die Administrationsstartseite, und Sie müssen sich in das System einloggen. Als Login-Namen verwenden Sie root, das Passwort ist das bei der Installation von mysql-server gesetzte. Darauf sollte sich die Administrationsoberfläche von phpMyAdmin öffnen (Abbildung).

Anschließend können Sie (entsprechende Kenntnisse vorausgesetzt) bestehende Datenbanken verändern, neue Datenbanken anlegen und diese administrieren. Die Bedienung ist recht intuitiv und kurzfristig erlernbar. Sie finden viele Erläuterungen und Tipps auf der Seite www.phpmyadmin.net.


Abbildung 22.2  Bearbeiten einer bestehenden Datenbank unter »phpMyAdmin«


Tipp 271: MySQL-Workbench nutzen

Eine weitere kostenlose und zugleich komfortable grafische Oberfläche zur Verwaltung von MySQL erhalten Sie direkt von der Seite des Herstellers: http://dev.mysql.com/downloads/workbench/5.2.html.

Das Programm ist Open Source, und daher ist es verwunderlich, dass es nicht direkt in den Ubuntu-Quellen zu finden ist. Trotzdem lässt es sich leicht installieren. Auf der genannten Seite finden Sie speziell für Ubuntu vorbereitete Pakete im 32- und 64-Bit-Format. Besonders komfortabel ist die Erstellung neuer Datenbankschemata.




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
  
  Zum Katalog
Zum Katalog: Ubuntu GNU/Linux

Ubuntu GNU/Linux
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Linux Server






 Linux Server


Zum Katalog: Linux-Server einrichten und administrieren






 Linux-Server
 einrichten und
 administrieren


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: Linux






 Linux


Zum Katalog: Debian






 Debian


Zum Katalog: Android 3






 Android 3


Zum Katalog: GIMP






 GIMP


Zum Katalog: Webserver einrichten und administrieren






 Webserver einrichten
 und administrieren


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de