Aufgabe 1: MySQL Server
Du erstellst einen MySQL-Server mit Docker Compose und verbindest dich mit einem Client.
Aufgaben
Abschnitt betitelt „Aufgaben“1. Docker Compose Datei erstellen
Abschnitt betitelt „1. Docker Compose Datei erstellen“Erstelle eine Datei docker-compose.yml mit folgendem Inhalt:
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:2. Container starten
Abschnitt betitelt „2. Container starten“docker compose up -dPrüfe ob der Container läuft:
docker compose psErwartete Ausgabe:
NAME IMAGE STATUS PORTSmysql-lab mysql:8.0 Up 10 seconds 0.0.0.0:3306->3306/tcp3. Logs prüfen
Abschnitt betitelt „3. Logs prüfen“docker compose logs mysqlWarte bis du siehst:
ready for connections. Version: '8.0.xx' socket: '/var/run/mysqld/mysqld.sock' port: 33064. Mit MySQL verbinden
Abschnitt betitelt „4. Mit MySQL verbinden“Option A: Direkt im Container
docker exec -it mysql-lab mysql -u student -pstudentpass testdbOption B: Mit lokalem MySQL-Client
mysql -h 127.0.0.1 -P 3306 -u student -pstudentpass testdbOption C: Mit GUI-Tools
| Tool | Download |
|---|---|
| MySQL Workbench | mysql.com/products/workbench |
| DBeaver | dbeaver.io |
| TablePlus | tableplus.com |
Verbindungsdaten:
- Host:
localhostoder127.0.0.1 - Port:
3306 - User:
student - Password:
studentpass - Database:
testdb
5. Datenbank testen
Abschnitt betitelt „5. Datenbank testen“Führe diese SQL-Befehle aus:
-- Tabelle erstellenCREATE 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ügenINSERT INTO users (name, email) VALUES ('Max Mustermann', 'max@example.com'), ('Anna Schmidt', 'anna@example.com');
-- Daten abfragenSELECT * FROM users;6. Container stoppen
Abschnitt betitelt „6. Container stoppen“# Container stoppen (Daten bleiben erhalten)docker compose stop
# Container stoppen und entfernen (Daten bleiben im Volume)docker compose down
# Container UND Daten löschendocker compose down -vFragen zur Reflexion
Abschnitt betitelt „Fragen zur Reflexion“- Was passiert mit den Daten, wenn du
docker compose downausführst? - Was passiert bei
docker compose down -v? - Warum sollte man in einer Produktionsumgebung nicht das Root-Passwort in der
docker-compose.ymlspeichern? - Wie würdest du ein Backup der Datenbank erstellen?
Troubleshooting
Abschnitt betitelt „Troubleshooting“”Port 3306 is already in use”
Abschnitt betitelt „”Port 3306 is already in use”“Ein anderer MySQL-Server läuft bereits. Ändere den Host-Port:
ports: - "3307:3306" # Nutze Port 3307 statt 3306“Access denied for user”
Abschnitt betitelt „“Access denied for user”“Prüfe ob du das richtige Passwort verwendest. Bei Änderungen am Passwort:
docker compose down -v # Volume löschendocker compose up -d # Neu startenContainer startet nicht
Abschnitt betitelt „Container startet nicht“docker compose logs mysqlNächste Aufgabe
Abschnitt betitelt „Nächste Aufgabe“Weiter zu Aufgabe 2: Microsoft SQL Server →