Zum Hauptinhalt springen

Tag 3

1 Dokumentationsaufträge

1.1 Recherche zu MySQL (Versionen, usw.)

Tag 2 - Kapitel 2.1.1

1.2 Recherche zur Installationsumgebung (OS, Kernel, etc)

Tag 2 - Kapitel 2.1.2

1.3 Dokumentation des Installationsprozesses

Tag 2 - Kapitel 2.1.3

1.4 Testing der Installation

Tag 2 - Kapitel 2.1.4

2 Übungen

2.1 Konfiguration eines RDBMS

2.1.1 Storage Engines bei MySQL

Recherche - Dokumentieren Sie ausführlich die 2 wichtigsten (nicht irgendwelche, die wichtigsten) Storage-Engines unter MySQL

Die zwei wichtigsten Storage-Engines für MySQL sind "InnoDB" und "MyISAM".

InnoDB ist der Standard Storage-Engines für MySQL. Es ist ACID-fähig und ist dadurch für kritische Anwendungen geeignet. Es unterstützt Transaktionen, somit gibt es keinen inkonsistenten Zustand. Bei Schreibvorgängen wird nicht die ganze Tabelle, sondern nur der Datensatz gesperrt (Row-Level-Locking). InnoDB nutzt auch Fremdschlüssel-Constraints. Diese stellen sicher, dass Beziehungen zwischen Tabellen korrekt sind.

MyISAM bietet eine hohe Lesegeschwindigkeit und ist somit für Anwendungen mit vielen Lesevorgängen geeignet, z.B. Webseiten. Bei Schreibvorgängen wird die gesamte Tabelle gesperrt und ist somit nicht so effektiv.

Recherche - Listen und beschreiben Sie kurz die restlichen Storage-Engines auf Ihrem System

SEBeschreibung
MemoryAlle Daten werden im RAM gespeichert. Keine dauerhafte Speicherung.
CSVSpeichert die Daten im CSV-Format. Geeignet für Import und Export.
ArchiveBietet eine hohe Komprimierung. Eignet sich für Archivdaten.
BlackholeEmpfängt alle Schreibvorgänge, speichert diese allerdings nicht.
NDBGeeignet für eine Cluster-Umgebung. Es ist gut skalierbar und hat eine hohe Verfügbarkeit.
MergeMyISAM Tabellen zu einem kombinieren. Es ist somit eine virtuelle Tabelle
FederatedBietet die Möglichkeit verteilte MySQL Server zu einer logischen Datenbank zu verbinden.
ExampleBietet Entwicklern einen einfachen Aufbau von Storage-Engines.

Überlegen Sie sich welche Daten mit welcher Storage Engine gespeichert werden könnten

SEAnwendung
InnoDBanspruchsvolle Anwendungen
MyISAMWebseiten/Suchmaschinen
Memorytemp. Daten (Cache & Session)
CSVImport und Export von Daten
ArchiveArchivierung von Daten
BlackholeSchreibvorgänge weiterleiten
NDBWebanwendung mit mehreren Systemen
MergeDaten aus Tabellen zusammenfügen
FederatedRemote Datenbanken zusammenfügen
ExampleTesting für Entwickler

Dokumentieren Sie wie eine Storage Engine auf eine Tabelle angewendet wird

Um eine Storage Engine auf eine Tabelle anzuwenden muss nach einem CREATE TABLE die ENGINE angegeben werden.

CREATE TABLE users (
id INT,
username varchar(255)
) ENGINE=InnoDB;

2.1.2 Benutzer und Berechtigungen

Erstellen Sie eine Demo-Datenbank mit zwei Tabellen

CREATE DATABASE demo_db;
USE demo_db;
CREATE TABLE tab1 (id int);
CREATE TABLE tab2 (id int);

Root-Benutzer konfiguriert (Login/Passwort)

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL_M141#';
FLUSH PRIVILEGES;

Benutzer konfiguriert (Login/Passwort/Berechtigung auf Datenbank eingeschränkt <- ein Anwendungsbenutzer)

CREATE USER 'm141_user'@'localhost' IDENTIFIED BY 'MySQL_M141#';
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON demo_db.* TO 'm141_user'@'localhost';
FLUSH PRIVILEGES;

Admin-Benutzer konfiguriert (Login/Passwort/Berechtigung auf Datenbank eingeschränkt)

CREATE USER 'm141_admin'@'localhost' IDENTIFIED BY 'MySQL_M141#';
-- RELOAD und PROCESS sind GLOBAL PRIVILEGES. Diese können nicht auf Datenbanken gegeben werden.
GRANT RELOAD,PROCESS ON *.* TO 'm141_admin'@'localhost';
FLUSH PRIVILEGES;

Verfizieren Sie Ihre Konfiguration und speichern Sie das Resultat in Ihrer Dokumentation

SHOW GRANTS FOR 'm141_user'@'localhost';
SHOW GRANTS FOR 'm141_admin'@'localhost';
OUTPUT
mysql> SHOW GRANTS FOR 'm141_user'@'localhost';
+----------------------------------------------------------------------------------------------+
| Grants for m141_user@localhost |
+----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `m141_user`@`localhost` |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON `demo_db`.* TO `m141_user`@`localhost` |
+----------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'm141_admin'@'localhost';
+----------------------------------------------------------+
| Grants for m141_admin@localhost |
+----------------------------------------------------------+
| GRANT RELOAD, PROCESS ON *.* TO `m141_admin`@`localhost` |
+----------------------------------------------------------+
1 row in set (0.00 sec)

Quellen: