From deb50954f0776638e269211a512d361951ad48d2 Mon Sep 17 00:00:00 2001
From: Sascha Schulz <sschulz@dh-software.de>
Date: Mo, 25 Aug 2025 15:39:10 +0200
Subject: [PATCH] add chapter to mysql setup

---
 index.html |  179 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 143 insertions(+), 36 deletions(-)

diff --git a/index.html b/index.html
index 7cf03bd..93dc23f 100644
--- a/index.html
+++ b/index.html
@@ -5072,7 +5072,7 @@
 						<p>Bearbeiten > Einstellungen > Protocols > TLS > (Pre)-Master-Secret log filename</p>
 					</section>
 					<section>
-						Einrichtung eines Datenbank-Servers (Beispiel MongoDB)
+						Einrichtung eines Datenbank-Servers (Beispiel MySql)
 					</section>
 					<section>
 						<p>Datenbank installieren:</p>
@@ -5081,50 +5081,157 @@
 								# Paketquellen aktualisieren
 								sudo apt update
 								
-								# Tools installieren
-								sudo apt install gnupg curl
+								# MySql installieren
+								sudo apt install mysql-server
 								
-								# GPG-Signatur herunterladen und importieren
-								curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
-								   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
-								   --dearmor
-							</code>
-						</pre>
-					</section>
-					<section>
-						<pre>
-							<code class="bash" data-trim data-line-numbers>
-								# URL den Paketquellen hinzufügen
-								echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
-									sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
-								
-								# Paketquellen aktualisieren
-								sudo apt update
-								
-								# MongoDB installieren
-								sudo apt install mongodb-org
-							</code>
-						</pre>
-					</section>
-					<section>
-						<pre>
-							<code class="bash" data-trim data-line-numbers>
 								# systemd neuladen
 								sudo systemctl daemon-reload
-								
-								# Autostart aktivieren
-								sudo systemctl enable mongod
-								
-								# Dienst starten
-								sudo systemctl start mongod.service
 							</code>
 						</pre>
 					</section>
 					<section>
-						<p>Der Server sollte nun erreichbar sein:</p>
+						<p>Der Server sollte nun laufen:</p>
 						<pre>
 							<code class="bash" data-trim data-line-numbers>
-								mongosh
+								sudo systemctl status mysql.service
+							</code>
+						</pre>
+					</section>
+					<section>
+						<p>Root-Passwort setzen/ändern:</p>
+						<pre>
+							<code class="bash" data-trim data-line-numbers>
+								# Login mit generischen Credentials
+								sudo mysql --defaults-file=/etc/mysql/debian.cnf
+							</code>
+						</pre>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+								ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
+								exit;
+							</code>
+						</pre>
+						<pre>
+							<code class="bash" data-trim data-line-numbers>
+								# Server neustarten
+								sudo systemctl restart mysql.service
+							</code>
+						</pre>
+						<pre>
+							<code class="bash" data-trim data-line-numbers>
+								# Login mit neuen Credentials
+								mysql -uroot -p
+							</code>
+						</pre>
+					</section>
+					<section>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+								CREATE DATABASE erp;
+								
+								use erp;
+							</code>
+						</pre>
+					</section>
+					<section>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+							create table stores
+							(
+								id     int        not null auto_increment primary key,
+								number varchar(5) not null
+							);
+							</code>
+						</pre>
+					</section>
+					<section>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+							create table revenues
+							(
+								id      int not null auto_increment primary key,
+								store   int not null,
+								revenue int not null,
+								foreign key (store) references stores (id)
+							);
+							</code>
+						</pre>
+					</section>
+					<section>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+insert into revenues (store, revenue)
+values (1, 10000),
+       (1, 20000),
+       (1, 15000),
+       (2, 13000);
+							</code>
+						</pre>
+					</section>
+					<section>
+						<pre>
+							<code class="sql" data-trim data-line-numbers>
+select stores.number, sum(revenues.revenue) as revenue
+from stores
+         inner join revenues on revenues.store = stores.id
+group by stores.id;
+							</code>
+						</pre>
+					</section>
+					<section>
+						<p>Zugriff in NodeJS</p>
+						<pre>
+							<code class="js" data-trim data-line-numbers>
+const mysql = require("mysql");
+
+var connection = mysql.createConnection({
+        host: 'localhost', user: 'root', password: 'root', database: 'erp'
+});
+
+connection.connect();
+
+connection.query('select * from stores;', function (error, results, fields) {
+        if (error) throw error;
+
+        console.log(results);
+});
+
+connection.end();
+							</code>
+						</pre>
+					</section>
+					<section>
+						<p>Aufgabe</p>
+						<p>Implementiere das <code>GROUP BY</code>-Statement aus dem SQL-Beispiel im NodeJS-Beispiel und gebe pro Zeile die Filiale mit dem Umsatz aus</p>
+					</section>
+					<section>
+						<p>Lösung</p>
+						<pre>
+							<code class="js" data-trim data-line-numbers>
+const mysql = require("mysql");
+
+var connection = mysql.createConnection({
+		host: 'localhost', user: 'root', password : 'root', database : 'erp'
+});
+
+connection.connect();
+
+const query = `
+	select stores.number, sum(revenues.revenue) as revenue
+	from stores
+         inner join revenues on revenues.store = stores.id
+	group by stores.id;
+`;
+
+connection.query(query, function (error, results, fields) {
+        if (error) throw error;
+
+        for (const result of results) {
+                console.log(result.number + ": " + result.revenue);
+        }
+});
+
+connection.end();
 							</code>
 						</pre>
 					</section>

--
Gitblit v1.9.3