Zum Inhalt springen

Aufgabe 1: MySQL Server

Du erstellst einen MySQL-Server mit Docker Compose und verbindest dich mit einem Client.

Erstelle eine Datei docker-compose.yml mit folgendem Inhalt:

docker-compose.yml
services:
mysql:
image: mysql:8.0
container_name: mysql-lab
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: testdb
MYSQL_USER: student
MYSQL_PASSWORD: studentpass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
Terminal-Fenster
docker compose up -d

Prüfe ob der Container läuft:

Terminal-Fenster
docker compose ps

Erwartete Ausgabe:

NAME IMAGE STATUS PORTS
mysql-lab mysql:8.0 Up 10 seconds 0.0.0.0:3306->3306/tcp
Terminal-Fenster
docker compose logs mysql

Warte bis du siehst:

ready for connections. Version: '8.0.xx' socket: '/var/run/mysqld/mysqld.sock' port: 3306

Option A: Direkt im Container

Terminal-Fenster
docker exec -it mysql-lab mysql -u student -pstudentpass testdb

Option B: Mit lokalem MySQL-Client

Terminal-Fenster
mysql -h 127.0.0.1 -P 3306 -u student -pstudentpass testdb

Option C: Mit GUI-Tools

ToolDownload
MySQL Workbenchmysql.com/products/workbench
DBeaverdbeaver.io
TablePlustableplus.com

Verbindungsdaten:

  • Host: localhost oder 127.0.0.1
  • Port: 3306
  • User: student
  • Password: studentpass
  • Database: testdb

Führe diese SQL-Befehle aus:

-- Tabelle erstellen
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Daten einfügen
INSERT INTO users (name, email) VALUES
('Max Mustermann', 'max@example.com'),
('Anna Schmidt', 'anna@example.com');
-- Daten abfragen
SELECT * FROM users;
Terminal-Fenster
# Container stoppen (Daten bleiben erhalten)
docker compose stop
# Container stoppen und entfernen (Daten bleiben im Volume)
docker compose down
# Container UND Daten löschen
docker compose down -v
  1. Was passiert mit den Daten, wenn du docker compose down ausführst?
  2. Was passiert bei docker compose down -v?
  3. Warum sollte man in einer Produktionsumgebung nicht das Root-Passwort in der docker-compose.yml speichern?
  4. Wie würdest du ein Backup der Datenbank erstellen?

Ein anderer MySQL-Server läuft bereits. Ändere den Host-Port:

ports:
- "3307:3306" # Nutze Port 3307 statt 3306

Prüfe ob du das richtige Passwort verwendest. Bei Änderungen am Passwort:

Terminal-Fenster
docker compose down -v # Volume löschen
docker compose up -d # Neu starten
Terminal-Fenster
docker compose logs mysql

Weiter zu Aufgabe 2: Microsoft SQL Server →