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

Inhaltsverzeichnis
Vorwort
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 Programme und Pakete installieren
8 Internet und E-Mail
9 Office
10 Grafik und Bildbearbeitung
11 Multimedia
12 Programmierung und Design
13 Software- und Paketverwaltung
14 Architektur
15 Backup und Sicherheit
16 Desktop-Virtualisierung
17 Serverinstallation
18 Administration und Monitoring
19 Netzwerke
20 Datei-Server – Ubuntu im Netzwerk
21 Der Server im Internet
22 Multimediaserver und Ihre persönliche Cloud
23 Hilfe
24 Befehlsreferenz
A Mark Shuttleworth
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
Ubuntu GNU/Linux von Marcus Fischer
Das umfassende Handbuch, aktuell zu Ubuntu 12.04 LTS »Precise Pangolin«
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
Rheinwerk Computing
1023 S., 7., aktualisierte Auflage, geb., mit DVD
39,90 Euro, ISBN 978-3-8362-1945-7
Pfeil 21 Der Server im Internet
Pfeil 21.1 Apache
Pfeil 21.1.1 Konfiguration
Pfeil 21.1.2 Test per Browser
Pfeil 21.2 Datenbankserver
Pfeil 21.2.1 Allgemeines zu MySQL
Pfeil 21.2.2 Installation
Pfeil 21.2.3 Benutzerverwaltung
Pfeil 21.2.4 Befehlsstruktur und Kürzel
Pfeil 21.2.5 Datenbanken/Tabellen erstellen und verwalten
Pfeil 21.2.6 Datentypen
Pfeil 21.2.7 Daten einfügen
Pfeil 21.3 FTP-Server
Pfeil 21.3.1 ProFTP
Pfeil 21.3.2 FTP im Terminal nutzen
Pfeil 21.4 WebDAV
Pfeil 21.4.1 Grundlagen
Pfeil 21.4.2 Konfiguration
Pfeil 21.5 E-Mail-Versand
Pfeil 21.6 Openfire – Jabber-Instant-Messaging-Server

Rheinwerk Computing - Zum Seitenanfang

21.2 DatenbankserverZur nächsten Ü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.


Rheinwerk Computing - Zum Seitenanfang

21.2.1 Allgemeines zu MySQLZur 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 Zellen Datenfelder 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 21.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 21.2),
  • eine zweite Informationen über die vorhandenen Artikel (siehe Tabelle 21.3),
  • in der dritten schließlich werden die einzelnen Käufe aufgelistet (siehe Tabelle 21.4).

Tabelle 21.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 Tabelle 21.3 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 21.3 Beispiel: Artikel – der Primärschlüssel ist das Element »Art.-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 21.4 enthält schließlich die Käufe, die die Kunden aus Tabelle 21.2 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 21.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. Tabelle 21.5 zeigt das Ergebnis einer solchen Abfrage.

Tabelle 21.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.


Rheinwerk Computing - Zum Seitenanfang

21.2.2 InstallationZur 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 274: 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 275: 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 276: 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 derMySQL-Daemon (mysqld) im 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. 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

Rheinwerk Computing - Zum Seitenanfang

21.2.3 BenutzerverwaltungZur 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 mit dem Befehl mysql -u root mysql in Ihren MySQL-Server einloggen. In der MySQL-Konsole geben Sie folgende Kommandos ein:

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

Um den Vorgang zu überprüfen, können Sie den Befehl mysql -u root -p ausführen, um sich an Ihrer lokalen MySQL-Datenbank anzumelden. 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");

Rheinwerk Computing - Zum Seitenanfang

21.2.4 Befehlsstruktur und KürzelZur 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 Tabelle 21.6 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 21.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 Tabelle 21.7 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 21.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.

Rheinwerk Computing - Zum Seitenanfang

21.2.5 Datenbanken/Tabellen erstellen und verwaltenZur 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 Tabelle 21.8.

Tabelle 21.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.

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

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 21.6)

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 Tabelle 21.9 zusammen.

Tabelle 21.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 hingegen 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 Vorteil, 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 Tabelle 21.10 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.

Struktur ausgeben lassen

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.

Icon

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.

Tabelle 21.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.

Rheinwerk Computing - Zum Seitenanfang

21.2.6 DatentypenZur nächsten ÜberschriftZur vorigen Überschrift

Sie werden in Abschnitt 21.2.7, »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 21.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:
    • [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.
    • [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 Tabelle 21.12 dargestellt.

Tabelle 21.12 Datums- 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.

Rheinwerk Computing - Zum Seitenanfang

21.2.7 Daten einfügenZur 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 277: 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 21.2).

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

Abbildung 21.2 SQL

Tipp 278: MySQL-Workbench nutzen

Eine weitere kostenlose und zugleich komfortable grafische Oberfläche zur Verwaltung von MySQL erhalten Sie 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 12.04 LTS

Ubuntu GNU/Linux 12.04 LTS
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Ubuntu 14.04 LTS






 Ubuntu 14.04 LTS


Zum Katalog: Linux Handbuch






 Linux Handbuch


Zum Katalog: Raspberry Pi






 Raspberry Pi


Zum Katalog: Ubuntu Server






 Ubuntu Server


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2012
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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de