Tag 3
1 Dokumentationsaufträge
1.1 Recherche zu MySQL (Versionen, usw.)
1.2 Recherche zur Installationsumgebung (OS, Kernel, etc)
1.3 Dokumentation des Installationsprozesses
1.4 Testing der Installation
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
SE | Beschreibung |
---|---|
Memory | Alle Daten werden im RAM gespeichert. Keine dauerhafte Speicherung. |
CSV | Speichert die Daten im CSV-Format. Geeignet für Import und Export. |
Archive | Bietet eine hohe Komprimierung. Eignet sich für Archivdaten. |
Blackhole | Empfängt alle Schreibvorgänge, speichert diese allerdings nicht. |
NDB | Geeignet für eine Cluster-Umgebung. Es ist gut skalierbar und hat eine hohe Verfügbarkeit. |
Merge | MyISAM Tabellen zu einem kombinieren. Es ist somit eine virtuelle Tabelle |
Federated | Bietet die Möglichkeit verteilte MySQL Server zu einer logischen Datenbank zu verbinden. |
Example | Bietet Entwicklern einen einfachen Aufbau von Storage-Engines. |
Überlegen Sie sich welche Daten mit welcher Storage Engine gespeichert werden könnten
SE | Anwendung |
---|---|
InnoDB | anspruchsvolle Anwendungen |
MyISAM | Webseiten/Suchmaschinen |
Memory | temp. Daten (Cache & Session) |
CSV | Import und Export von Daten |
Archive | Archivierung von Daten |
Blackhole | Schreibvorgänge weiterleiten |
NDB | Webanwendung mit mehreren Systemen |
Merge | Daten aus Tabellen zusammenfügen |
Federated | Remote Datenbanken zusammenfügen |
Example | Testing 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';
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: