Zum Inhalt springen

Gespräch:Installation MariaDB III

aus AufEinWort, der freien Forschung



Sophos:


Ja, es könnte tatsächlich kein Problem sein, dass die Gruppe staff gesetzt wird, wenn MariaDB vom angemeldeten User aus betrieben wird.

🔹 1️⃣ Warum setzt MariaDB staff als Gruppe?

  • Wenn MariaDB als angemeldeter User (aewi) betrieben wird, dann gehört der Prozess zur primären Benutzergruppe – in diesem Fall staff.
  • _mysql ist der Systembenutzer, aber da MariaDB über Homebrew installiert wurde, könnte es sein, dass Homebrew die Dienste in einer benutzerbasierten Umgebung laufen lässt.

📌 Überprüfung, wer MariaDB gestartet hat:

bash

KopierenBearbeiten

ps aux | grep mariadb

  • Falls MariaDB unter _mysql läuft, dann wäre staff tatsächlich falsch.
  • Falls es unter dem Benutzer aewi läuft, dann ist staff korrekt.

In deinem Fall:

bash

KopierenBearbeiten

_mysql             387   0,0  0,7 411659136 110048   ??  Ss    5:17pm   0:00.40 /opt/homebrew/opt/mariadb@10.5/bin/mariadbd --user=_mysql --datadir=/opt/homebrew/var/mariadb --socket=/opt/homebrew/var/mariadb/mariadb.sock

➡ MariaDB läuft unter _mysql, nicht aewi, deshalb sollte die Gruppe _mysql sein.

🔹 2️⃣ Ist staff als Gruppe problematisch?

Ja, wenn Apache oder PHP nicht auf den Socket zugreifen können.

Nein, wenn phpMyAdmin und MediaWiki trotzdem ohne Fehler auf MariaDB zugreifen können.

📌 Teste jetzt phpMyAdmin & MediaWiki erneut:

  • https://pma.aewi.de
  • https://wiki.aewi.de/mw-config/index.php?page=DBConnect

✅ Falls alles funktioniert, ist staff kein Problem.

❌ Falls du weiterhin den Fehler mysqli::real_connect(): (HY000/2002): No such file or directory bekommst, dann haben wir ein Berechtigungsproblem.

🔹 3️⃣ Alternative Lösung testen

Falls phpMyAdmin oder MediaWiki immer noch nicht funktionieren, dann teste bitte die automatische Berechtigungsanpassung:

1️⃣ Erstelle das Fix-Skript:

bash

KopierenBearbeiten

sudo nano /usr/local/bin/fix-mariadb-socket.sh

Füge Folgendes ein:

bash

KopierenBearbeiten

#!/bin/bash

chown _mysql:_mysql /opt/homebrew/var/mariadb/mariadb.sock

chmod 660 /opt/homebrew/var/mariadb/mariadb.sock

2️⃣ Speichern und ausführbar machen:

bash

KopierenBearbeiten

sudo chmod +x /usr/local/bin/fix-mariadb-socket.sh

3️⃣ Nach jedem Start ausführen lassen:

Füge dies zu com.mariadb.server.plist hinzu:

xml

KopierenBearbeiten

<key>StartInterval</key>

<integer>10</integer>

<key>Program</key>

<string>/usr/local/bin/fix-mariadb-socket.sh</string>

4️⃣ Plist neuladen & MariaDB starten:

bash

KopierenBearbeiten

sudo launchctl unload /Library/LaunchDaemons/com.mariadb.server.plist

sudo launchctl load /Library/LaunchDaemons/com.mariadb.server.plist

📌 Jetzt sollte der Socket nach jedem Start automatisch korrigiert werden.

🔹 Fazit

✅ Wenn alles funktioniert, dann ist staff kein Problem.

❌ Falls phpMyAdmin & MediaWiki nicht auf MariaDB zugreifen können, dann liegt es an falschen Berechtigungen.

🚀 Teste jetzt den Zugriff auf phpMyAdmin & MediaWiki und sag mir Bescheid!

Nikolaos:

Deine Alternative Lösung führt dazu, daß es nun keine mariadb.sock mehr gibt:

ls -l /opt/homebrew/var/mariadb/mariadb.sock

ls: /opt/homebrew/var/mariadb/mariadb.sock: No such file or directory

mariadb.sock wurde durch "sudo find / -name "mariadb.sock" 2>/dev/null" nicht gefunden.

Ich habe daher deiner Alternative Lösung wieder außer Betrieb genommen und mariadb startet wieder.

Wie oder wodurch wird der user aewi und staff als Rechte gesetzt?

2/2

Sophos:


Dass mariadb.sock nach meiner alternativen Lösung plötzlich nicht mehr existiert, bedeutet, dass MariaDB den Socket gar nicht mehr erstellt hat. Das kann daran liegen, dass der Dienst nicht korrekt gestartet wurde oder dass unsere Berechtigungsänderungen den Prozess gestört haben.

🔹 1️⃣ Warum wird staff als Gruppe gesetzt?

Die Gruppe staff wird automatisch zugewiesen, wenn ein Prozess als normaler Benutzer (aewi) läuft, anstatt als _mysql-Benutzer.

📌 Überprüfung, ob MariaDB als aewi oder _mysql läuft:

bash

KopierenBearbeiten

ps aux | grep mariadb

➡ Falls MariaDB unter _mysql läuft, sollte die Gruppe _mysql sein.

➡ Falls es unter aewi läuft, dann gehört es zur Benutzergruppe staff.

MariaDB wird von Homebrew als User aewi gestartet, wenn brew services start mariadb@10.5 verwendet wird.

📌 Wenn du willst, dass es als _mysql läuft, dann starte es mit:

bash

KopierenBearbeiten

sudo -u _mysql brew services start mariadb@10.5

✅ Damit sollte mariadb.sock unter _mysql:_mysql erstellt werden.

🔹 2️⃣ Was bestimmt den Besitzer von mariadb.sock?

📌 MariaDB selbst entscheidet, mit welchem Benutzer & Gruppe der Socket erstellt wird.

Das geschieht basierend auf:

  1. Dem Benutzer, unter dem mariadbd läuft (_mysql oder aewi).
  2. Den Startoptionen in my.cnf (wir haben bereits socket = /opt/homebrew/var/mariadb/mariadb.sockgesetzt).

📌 Überprüfung, mit welchem Benutzer MariaDB läuft:

bash

KopierenBearbeiten

ls -lah /opt/homebrew/var/mariadb/

➡ Falls staff als Gruppe erscheint, dann wurde MariaDB als aewi gestartet.

➡ Falls _mysql als Gruppe erscheint, dann wurde MariaDB korrekt als _mysql gestartet.

🔹 3️⃣ Wie erzwingen wir _mysql als Benutzer für den Start?

📌 Lösung 1: Setze explizit den Benutzer in der com.mariadb.server.plist

Ändere in der Datei /Library/LaunchDaemons/com.mariadb.server.plist:

xml

KopierenBearbeiten

<key>ProgramArguments</key>

<array>

    <string>/opt/homebrew/opt/mariadb@10.5/bin/mariadbd</string>

    <string>--user=_mysql</string>

    <string>--datadir=/opt/homebrew/var/mariadb</string>

    <string>--socket=/opt/homebrew/var/mariadb/mariadb.sock</string>

</array>

📌 Danach launchctl neu laden:

bash

KopierenBearbeiten

sudo launchctl unload /Library/LaunchDaemons/com.mariadb.server.plist

sudo launchctl load /Library/LaunchDaemons/com.mariadb.server.plist

sudo brew services restart mariadb@10.5

✅ Jetzt sollte mariadb.sock mit _mysql:_mysql erstellt werden.

📌 Lösung 2: Manuelles Starten mit _mysql

Falls Homebrew immer noch den falschen Benutzer verwendet, kannst du MariaDB manuell als _mysql starten:

bash

KopierenBearbeiten

sudo -u _mysql /opt/homebrew/opt/mariadb@10.5/bin/mariadbd --user=_mysql --datadir=/opt/homebrew/var/mariadb --socket=/opt/homebrew/var/mariadb/mariadb.sock &

✅ Danach sollte der Socket mit _mysql:_mysql korrekt erstellt werden.

🔹 Fazit

1️⃣ MariaDB wird als aewi gestartet → Gruppe ist staff.

2️⃣ MariaDB muss als _mysql gestartet werden, um mariadb.sock mit _mysql:_mysql zu erzeugen.

3️⃣ Lösung: Setze den --user=_mysql Parameter in com.mariadb.server.plist.

4️⃣ Falls das nicht funktioniert, starte MariaDB manuell als _mysql mit sudo -u _mysql.

🔥 Teste das & sag mir, ob es endlich klappt! 🚀

Nikolaos:

du drehst dich für mich offenbar  im Kreis, gibst wiederholt dieselben Tipps als Lösung an, von denen wir bereits wissen, daß sie so nicht funktionierten.

1. Ich habe nach den Start den user auf _msql mit den Rechten gesetzt.

Ich habe dann den Zugriff getestet und dann komme ich auch nicht

1.1 MediaWiki: Cannot access the database: :real_connect(): (HY000/2006): MySQL server has gone away

1.2. phpmyadmin: mysqli::real_connect(): (HY000/2002): No such file or directory

MariaDB läuft jedoch!

1.3 ich kann mich trotz der Fehlermeldungen über "mariadb -u root -p" und über "mariadb -u root -p -h 127.0.0.1" mittels Terminal einloggen!

1.4. Also wird es nicht an den Rechten und dem User von mariadb.sock liegen – oder?

2.1 Die vergebenen Rechte sind derzeit:

ls -lah /opt/homebrew/var/mariadb/mariadb.sock

srw-rw----  1 _mysql  _mysql     0B 22 Feb 17:51 /opt/homebrew/var/mariadb/mariadb.sock

2.2 Allerdings kann ich mich mit folgendem nicht einloggen:

mariadb -u root -p --socket=/opt/homebrew/var/mariadb/mariadb.sock

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/homebrew/var/mariadb/mariadb.sock' (13)

Rechte sind "srw-rw----" und nicht "srwxrwxrwx", der richtige user _mysql ist gesetzt.

Müssen die Rechte anders sein? oder liegt es an etwas anderem?

6/6

Sophos:


Danke für deine Geduld. Wir konzentrieren uns jetzt nur auf die relevanten Punkte und drehen keine weiteren Schleifen.

🔍 1️⃣ Analyse der Situation

  • MariaDB läuft → Bestätigt durch Terminal-Zugriff mit mariadb -u root -p
  • phpMyAdmin & MediaWiki können sich nicht verbinden
  • Verbindungsversuch über --socket schlägt fehl mit Fehler (HY000/2002) und (HY000/2006)

📌 Daraus ergibt sich:

  • Der Socket existiert (mariadb.sock ist da).
  • MariaDB ist aktiv und läuft.
  • PHP/MySQL-Clients können sich trotzdem nicht verbinden. ➡ Problem liegt nicht an MariaDB selbst, sondern an der Kommunikation mit PHP/MySQL.

🔹 2️⃣ Fehlerursache: Socket-Fehlkonfiguration oder Berechtigungsproblem

📌 Erklärung für den Fehler ERROR 2002 (HY000): Can't connect to local MySQL server through socket

  • Error (13) bedeutet "Permission denied".
  • MediaWiki & phpMyAdmin laufen als Apache-User (_www), nicht als _mysql oder aewi.
  • Apache/_www darf nicht auf mariadb.sock zugreifen.

🛠 3️⃣ Lösung: Berechtigungen korrigieren

👉 Erlaube Apache (_www) Zugriff auf mariadb.sock.

bash

KopierenBearbeiten

sudo chown _mysql:_www /opt/homebrew/var/mariadb/mariadb.sock

sudo chmod 660 /opt/homebrew/var/mariadb/mariadb.sock

Dann testen:

bash

KopierenBearbeiten

mariadb -u root -p --socket=/opt/homebrew/var/mariadb/mariadb.sock

Falls es jetzt funktioniert:

  • PHP kann sich mit MariaDB verbinden.
  • phpMyAdmin & MediaWiki sollten wieder laufen.

Falls der Fehler bleibt:

📌 Schritt 2: Prüfe, ob PHP/MySQL die richtige Socket-Datei nutzt

bash

KopierenBearbeiten

php -i | grep -i mysql.default_socket

Falls da noch /tmp/mysql.sock steht, müssen wir das in php.ini anpassen.

🔹 4️⃣ Falls der Fehler bleibt: Direkt über TCP verbinden

Falls phpMyAdmin & MediaWiki weiterhin Probleme haben, zwinge sie, über 127.0.0.1 zu verbinden:

📌 In config.inc.php für phpMyAdmin:

php

KopierenBearbeiten

$cfg['Servers'][$i]['host'] = '127.0.0.1';

$cfg['Servers'][$i]['socket'] = ''; // Entferne die Socket-Verbindung

📌 In LocalSettings.php für MediaWiki:

php

KopierenBearbeiten

$wgDBserver = "127.0.0.1";

Danach Apache neu starten:

bash

KopierenBearbeiten

sudo brew services restart httpd

🚀 Fazit

  • Berechtigungsproblem: mariadb.sock gehört root:_mysql → Apache (_www) hat keinen Zugriff. ✅ Lösung: chown _mysql:_www und chmod 660 setzen.
  • Falls PHP falsch konfiguriert ist: ✅ PHP-mysql.default_socket muss /opt/homebrew/var/mariadb/mariadb.sock sein.
  • Falls das Problem bleibt: ✅ Direkt über 127.0.0.1 anstatt localhost verbinden.

💡 Teste das jetzt Schritt für Schritt & sag mir, wo wir noch haken! 🚀

Nikolaos:

Ich habe folgende Angaben bei MariaDB zu OSX gefunden.

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

  <key>Label</key> <string>com.mariadb.server</string>

  <key>KeepAlive</key><true/>

  <key>RunAtLoad</key><true/>

  <key>LaunchOnlyOnce</key><false/>

  <key>ExitTimeOut</key><integer>600</integer>

  <key>WorkingDirectory</key><string>/usr/local/var</string>

  <key>Program</key><string>/usr/local/bin/mysqld</string>

  <key>ProgramArguments</key>

  <array>

    <string>/usr/local/bin/mysqld</string>

    <string>--user=_mysql</string>

    <string>--basedir=/usr/local/opt/mariadb</string>

    <string>--plugin-dir=/usr/local/opt/mariadb/lib/plugin</string>

    <string>--datadir=/usr/local/var/mysql</string>

    <string>--log-error=/usr/local/var/mysql/Data-Server.local.err</string>

    <string>--pid-file=/usr/local/var/mysql/Data-Server.local.pid</string>

    <string>--sql-mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</string>

  </array>

</dict>

</plist>

Ändere bitte die Dateipfade gemäß unserer Homebrew Installation.

Sophos:


Hier ist die angepasste com.mariadb.server.plist für deine Homebrew-Installation auf macOS, basierend auf den korrekten Pfaden für MariaDB 10.5, die du nutzt:

xml

KopierenBearbeiten

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

  <key>Label</key>

  <string>com.mariadb.server</string>

  <key>KeepAlive</key>

  <true/>

  <key>RunAtLoad</key>

  <true/>

  <key>LaunchOnlyOnce</key>

  <false/>

  <key>ExitTimeOut</key>

  <integer>600</integer>

  <key>WorkingDirectory</key>

  <string>/opt/homebrew/var/mariadb</string>

  <key>Program</key>

  <string>/opt/homebrew/opt/mariadb@10.5/bin/mariadbd</string>

  <key>ProgramArguments</key>

  <array>

    <string>/opt/homebrew/opt/mariadb@10.5/bin/mariadbd</string>

    <string>--user=_mysql</string>

    <string>--basedir=/opt/homebrew/opt/mariadb@10.5</string>

    <string>--plugin-dir=/opt/homebrew/opt/mariadb@10.5/lib/plugin</string>

    <string>--datadir=/opt/homebrew/var/mariadb</string>

    <string>--log-error=/opt/homebrew/var/mariadb/mariadb.err</string>

    <string>--pid-file=/opt/homebrew/var/mariadb/mariadb.pid</string>

    <string>--socket=/opt/homebrew/var/mariadb/mariadb.sock</string>

    <string>--sql-mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</string>

  </array>

</dict>

</plist>

🛠 Installation & Aktivierung der neuen .plist

1️⃣ Speichern:

Speichere die Datei als /Library/LaunchDaemons/com.mariadb.server.plist

2️⃣ Berechtigungen setzen:

bash

KopierenBearbeiten

sudo chown root:wheel /Library/LaunchDaemons/com.mariadb.server.plist

sudo chmod 644 /Library/LaunchDaemons/com.mariadb.server.plist

3️⃣ Alten Dienst entladen, falls vorhanden:

bash

KopierenBearbeiten

sudo launchctl unload /Library/LaunchDaemons/com.mariadb.server.plist

4️⃣ Neue .plist laden & MariaDB starten:

bash

KopierenBearbeiten

sudo launchctl load /Library/LaunchDaemons/com.mariadb.server.plist

sudo brew services restart mariadb@10.5

5️⃣ Testen, ob MariaDB läuft:

bash

KopierenBearbeiten

ps aux | grep mariadb

ls -lah /opt/homebrew/var/mariadb/mariadb.sock

🔹 Fazit

✅ Jetzt sollte MariaDB automatisch beim Systemstart als _mysql laufen.

✅ Die korrekten Pfade für Homebrew und deine Installation sind jetzt in der .plist gesetzt.

✅ Falls es nach einem Neustart nicht funktioniert, überprüfe das Error-Log:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/mariadb/mariadb.err

🔥 Teste es & sag mir Bescheid, ob alles läuft! 🚀

Nikolaos:

Damit bleibt zumindest alles beim alten. Also der Fehler ist derselbe, neue Fehler kamen nicht hinzu. User ist mysql staff:

Gehen wir mal davon aus, daß das richtig so ist und suchen den Fehler an anderer Stelle.

Sophos:


Da wir jetzt bestätigt haben, dass MariaDB korrekt läuft und die User/Gruppe von mariadb.sock wahrscheinlich nicht das Problem ist, fokussieren wir uns jetzt auf eine andere Fehlerquelle für phpMyAdmin & MediaWiki.

🔍 1️⃣ Was wir bereits wissen

  • MariaDB läuft einwandfrei, du kannst dich über Terminal & Querious einloggen.
  • MediaWiki & phpMyAdmin können sich nicht verbinden, Fehler:
    • mysqli::real_connect(): (HY000/2002): No such file or directory
    • Cannot access the database: :real_connect(): (HY000/2006): MySQL server has gone away
  • MariaDB-User & Berechtigungen sind korrekt
  • MariaDB läuft auf 127.0.0.1 & socket /opt/homebrew/var/mariadb/mariadb.sock
  • PHP und Apache laufen richtig

➡ Daraus folgt:

Das Problem liegt entweder an:

  1. Falscher socket-Pfad in PHP / phpMyAdmin / MediaWiki
  2. Apache kann sich nicht mit MariaDB verbinden (weil php-fpm oder mod_php falsch konfiguriert ist)

**🔹 2️⃣ Fehlersuche:

📌 1️⃣ Test: Läuft MySQL unter PHP?

Führe folgenden Befehl aus, um zu testen, ob PHP MySQL richtig erkennt:

bash

KopierenBearbeiten

php -i | grep -i mysql

Besonders wichtig sind die Zeilen:

  • pdo_mysql.default_socket
  • mysqli.default_socket

➡ Falls hier noch /tmp/mysql.sock steht, dann liegt das Problem darin!

🔹 Lösung: Setze den richtigen socket in php.ini

bash

KopierenBearbeiten

sudo nano /opt/homebrew/etc/php/8.2/php.ini

Suche nach dieser Zeile:

ini

KopierenBearbeiten

pdo_mysql.default_socket = /tmp/mysql.sock

Ändere sie zu:

ini

KopierenBearbeiten

pdo_mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

Speichern (CTRL + X, dann Y, dann Enter)

🚀 Danach PHP & Apache neu starten:

bash

KopierenBearbeiten

sudo brew services restart php@8.2

sudo brew services restart httpd

📌 2️⃣ Test: Verbindet sich phpMyAdmin über TCP statt Socket?

Falls PHP nicht über den Socket verbinden kann, erzwinge TCP als Verbindungsmethode für phpMyAdmin.

🔹 Ändere die config.inc.php von phpMyAdmin:

bash

KopierenBearbeiten

sudo nano /opt/homebrew/share/phpmyadmin/config.inc.php

Suche diese Zeile:

php

KopierenBearbeiten

$cfg['Servers'][$i]['host'] = 'localhost';

Ändere sie zu:

php

KopierenBearbeiten

$cfg['Servers'][$i]['host'] = '127.0.0.1';

unset($cfg['Servers'][$i]['socket']);

🚀 Apache neu starten:

bash

KopierenBearbeiten

sudo brew services restart httpd

Teste jetzt phpMyAdmin erneut!

📌 3️⃣ Test: Kann MediaWiki über TCP statt Socket verbinden?

🔹 Ändere die LocalSettings.php für MediaWiki:

bash

KopierenBearbeiten

sudo nano /Library/WebServer/Documents/LocalSettings.php

Suche:

php

KopierenBearbeiten

$wgDBserver = "localhost";

Ändere zu:

php

KopierenBearbeiten

$wgDBserver = "127.0.0.1";

🚀 Apache neu starten & erneut testen

bash

KopierenBearbeiten

sudo brew services restart httpd

Teste jetzt MediaWiki erneut!

🔥 Fazit & Nächste Schritte

  • ✅ Falls php -i | grep mysql noch /tmp/mysql.sock anzeigt → php.ini fixen
  • ✅ Falls TCP für phpMyAdmin & MediaWiki das Problem löst, dann war die Socket-Verbindung das Problem
  • ❌ Falls der Fehler bleibt, schauen wir uns das Apache-Log an:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/log/httpd/error_log

🔥 Teste die Änderungen & sag mir, wo wir stehen! 🚀

Nikolaos:

Derzeit habe ich:

/* Authentication type */

$cfg['Servers'][$i]['auth_type'] = 'cookie';

/* Server parameters */

$cfg['Servers'][$i]['host'] = '127.0.0.1';

$cfg['Servers'][$i]['socket'] = '/opt/homebrew/var/mariadb/mariadb.sock';

$cfg['Servers'][$i]['port'] = '3306';

$cfg['Servers'][$i]['connect_type'] = 'socket';

$cfg['Servers'][$i]['compress'] = false;

$cfg['Servers'][$i]['AllowNoPassword'] = false;

$cfg['Servers'][$i]['user'] = 'root';

$cfg['Servers'][$i]['password'] = '44%%55Aufeinwort';

Wie soll och es ändern?

4/4

Sophos:


Deine aktuelle Konfiguration in config.inc.php für phpMyAdmin ist gut, aber es gibt eine mögliche Fehlkonfiguration bei der Verbindungsmethode.

🔹 1️⃣ Änderungen in config.inc.php

🚀 Lösung: Entferne die socket-Verbindung & erlaube TCP

Ändere den Block auf:

php

KopierenBearbeiten

/* Authentication type */

$cfg['Servers'][$i]['auth_type'] = 'cookie';

/* Server parameters */

$cfg['Servers'][$i]['host'] = '127.0.0.1'; // Erzwinge TCP-Verbindung

unset($cfg['Servers'][$i]['socket']); // Entferne die Socket-Verbindung

$cfg['Servers'][$i]['port'] = '3306';

$cfg['Servers'][$i]['connect_type'] = 'tcp'; // TCP statt Socket

$cfg['Servers'][$i]['compress'] = false;

$cfg['Servers'][$i]['AllowNoPassword'] = false;

$cfg['Servers'][$i]['user'] = 'root';

$cfg['Servers'][$i]['password'] = '44%%55Aufeinwort';

🔹 2️⃣ Apache & PHP neu starten

Nach der Änderung musst du Apache & PHP neu starten, damit die Änderungen greifen:

bash

KopierenBearbeiten

sudo brew services restart php@8.2

sudo brew services restart httpd

🔹 3️⃣ Testen

1️⃣ Gehe zu: https://pma.aewi.de/phpmyadmin/

2️⃣ Melde dich mit root und deinem Passwort an.

3️⃣ Falls es immer noch nicht geht:

  • Fehlermeldung notieren & mir schicken.
  • Error-Logs prüfen:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/log/httpd/error_log

🔥 Teste das & sag mir, ob phpMyAdmin jetzt funktioniert! 🚀

Nikolaos:

Wie steht es um die Reihenfolge des Start der Dienste?

Wenn phpmyadmin noch den alten mariabd.sock einliest und dann erst Mariadb startet und einen neuen Socket anlegt, könnte dies der Grund sein?

Wir sollten haben:

1. dnsamask

2. mariadb

3. http

4. php

5. wireguard

oder?

Derzeit ist es so:

sudo brew services list

Password:

Name         Status  User File

dnsmasq      started root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

httpd        started root /Library/LaunchDaemons/homebrew.mxcl.httpd.plist

mariadb@10.5 stopped root /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

php@8.2      started root /Library/LaunchDaemons/homebrew.mxcl.php@8.2.plist

wireguard wird nicht durch homebrew gelistet, da es eigens gestartet wird.

wenn die brew liste die Startlreihenfolge ist, dann startet mariadb vor php und es düfte keine Rolle spielen.

wir können ja ganz einfach erstmal nur mariadb als erstes starten – oder?

3/3

Sophos:


Ja, die Startreihenfolge der Dienste kann eine Rolle spielen, wenn Dienste voneinander abhängen.

🔹 1️⃣ Optimale Startreihenfolge

Dein Vorschlag ist richtig, die Dienste sollten in folgender Reihenfolge starten:

1️⃣ dnsmasq (damit DNS-Auflösung für lokale Domains funktioniert)

2️⃣ mariadb (weil phpMyAdmin & MediaWiki darauf zugreifen)

3️⃣ httpd (Apache) (weil PHPMyAdmin & MediaWiki über den Webserver laufen)

4️⃣ php (weil Apache auf PHP-Funktionen zugreift)

5️⃣ wireguard (weil Fernzugriff & VPN unabhängig sind)

🔹 2️⃣ Aktuelle Reihenfolge laut brew services list

Derzeit sieht deine Startreihenfolge so aus:

bash

KopierenBearbeiten

dnsmasq      ✅ gestartet

httpd        ✅ gestartet

mariadb@10.5 ❌ STOPPED

php@8.2      ✅ gestartet

👉 Problem:

  • MariaDB ist gestoppt! Das bedeutet, dass phpMyAdmin & MediaWiki keinen Zugriff auf die Datenbank haben können.
  • Apache (httpd) und PHP (php@8.2) starten, bevor MariaDB läuft.
  • phpMyAdmin lädt den alten mariadb.sock ein, der nicht mehr existiert → Das führt zu Fehlern.

📌 Lösung: Wir müssen sicherstellen, dass mariadb@10.5 als erstes startet.

🔹 3️⃣ Lösung: Startreihenfolge manuell anpassen

👉 Schritt 1: Stoppe alle Dienste

bash

KopierenBearbeiten

sudo brew services stop php@8.2

sudo brew services stop httpd

sudo brew services stop mariadb@10.5

sudo brew services stop dnsmasq

👉 Schritt 2: Starte die Dienste in der richtigen Reihenfolge

bash

KopierenBearbeiten

sudo brew services start dnsmasq

sudo brew services start mariadb@10.5

sudo brew services start httpd

sudo brew services start php@8.2

👉 Schritt 3: Überprüfe, ob alles korrekt gestartet wurde

bash

KopierenBearbeiten

sudo brew services list

Erwartetes Ergebnis:

sql

KopierenBearbeiten

Name         Status  User File

dnsmasq      started root /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

mariadb@10.5 started root /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

httpd        started root /Library/LaunchDaemons/homebrew.mxcl.httpd.plist

php@8.2      started root /Library/LaunchDaemons/homebrew.mxcl.php@8.2.plist

🔹 4️⃣ Automatische Startreihenfolge bei Systemstart sicherstellen

Wenn du möchtest, dass mariadb@10.5 IMMER als erstes startet, kannst du die plist-Konfiguration anpassen.

👉 Füge KeepAlive für MariaDB ein

bash

KopierenBearbeiten

sudo nano /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

Füge zwischen <dict> und </dict> diese Zeilen hinzu:

xml

KopierenBearbeiten

<key>KeepAlive</key>

<true/>

<key>RunAtLoad</key>

<true/>

🚀 Danach die .plist erneut laden & testen

bash

KopierenBearbeiten

sudo launchctl unload /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

✅ Fazit

  • MariaDB muss vor Apache & PHP starten!
  • Stoppe alle Dienste & starte sie in der richtigen Reihenfolge.
  • Falls nach einem Neustart die falsche Reihenfolge geladen wird, passe die .plist an.

🔥 Teste das & sag mir, ob phpMyAdmin & MediaWiki jetzt laufen! 🚀

Nikolaos:

es gibt einen brew Befehl um die Starreihenfolge zu ändern – oder?

Sophos:


Ja, Homebrew selbst hat keinen direkten Befehl, um die Startreihenfolge zu ändern, aber du kannst die Reihenfolge über brew services steuern, indem du die Dienste in der gewünschten Reihenfolge neu registrierst.

🔹 1️⃣ brew services nutzt launchctl

Homebrew verwendet launchctl, um Dienste beim Booten zu starten. Die Startreihenfolge basiert darauf, in welcher Reihenfolge die Dienste geladen werden.

💡 Einfach gesagt:

Je später ein Dienst gestartet wurde, desto weiter unten steht er in der Priorität.

→ Das bedeutet, dass ein später gestarteter Dienst einen früher gestarteten überholen kann.

🔹 2️⃣ Lösung: Brew-Dienste in der richtigen Reihenfolge registrieren

👉 Schritt 1: Stoppe alle Brew-Dienste

bash

KopierenBearbeiten

brew services stop php@8.2

brew services stop httpd

brew services stop mariadb@10.5

brew services stop dnsmasq

👉 Schritt 2: Starte die Dienste in der gewünschten Reihenfolge

bash

KopierenBearbeiten

brew services start dnsmasq

brew services start mariadb@10.5

brew services start httpd

brew services start php@8.2

💡 Jetzt merkt sich brew services, dass mariadb@10.5 vor Apache und PHP gestartet wurde.

🔥 Teste das mit:

bash

KopierenBearbeiten

brew services list

Falls ein Dienst nicht als started angezeigt wird, musst du ihn nochmal manuell starten.

🔹 3️⃣ Alternativ: Reihenfolge über launchctl anpassen

Falls brew services start nicht die Reihenfolge speichert, kannst du launchctl direkt benutzen.

👉 Schritt 1: Stoppe alle brew-Dienste

bash

KopierenBearbeiten

sudo launchctl bootout system /Library/LaunchDaemons/homebrew.mxcl.php@8.2.plist

sudo launchctl bootout system /Library/LaunchDaemons/homebrew.mxcl.httpd.plist

sudo launchctl bootout system /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

sudo launchctl bootout system /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

👉 Schritt 2: Lade die Dienste in der richtigen Reihenfolge

bash

KopierenBearbeiten

sudo launchctl bootstrap system /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

sudo launchctl bootstrap system /Library/LaunchDaemons/homebrew.mxcl.mariadb@10.5.plist

sudo launchctl bootstrap system /Library/LaunchDaemons/homebrew.mxcl.httpd.plist

sudo launchctl bootstrap system /Library/LaunchDaemons/homebrew.mxcl.php@8.2.plist

🚀 Danach überprüfen:

bash

KopierenBearbeiten

launchctl list | grep homebrew

→ Falls MariaDB nicht startet, versuche diesen Fix:

bash

KopierenBearbeiten

sudo launchctl enable system/homebrew.mxcl.mariadb@10.5

🔹 4️⃣ Automatische Reihenfolge nach Neustart sicherstellen

Falls Homebrew nach jedem Neustart die falsche Reihenfolge lädt, kannst du einen "Verzögerten Start" für Apache & PHP hinzufügen.

📌 Erstelle ein Start-Skript für die korrekte Reihenfolge

bash

KopierenBearbeiten

sudo nano /Library/LaunchDaemons/com.local.startup.plist

Füge Folgendes ein:

xml

KopierenBearbeiten

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>Label</key>

    <string>com.local.startup</string>

    <key>ProgramArguments</key>

    <array>

        <string>/bin/sh</string>

        <string>-c</string>

        <string>sleep 10 && brew services start httpd && sleep 5 && brew services start php@8.2</string>

    </array>

    <key>RunAtLoad</key>

    <true/>

    <key>KeepAlive</key>

    <true/>

</dict>

</plist>

📌 Danach aktivieren:

bash

KopierenBearbeiten

sudo chown root:wheel /Library/LaunchDaemons/com.local.startup.plist

sudo chmod 644 /Library/LaunchDaemons/com.local.startup.plist

sudo launchctl load /Library/LaunchDaemons/com.local.startup.plist

🚀 Nach dem nächsten Neustart werden HTTP & PHP verzögert gestartet, nachdem MariaDB läuft.

✅ Fazit

1️⃣ brew services speichert die Reihenfolge basierend auf der Reihenfolge, in der die Dienste gestartet werden.

2️⃣ Falls brew services nicht ausreicht, kann launchctl für eine genauere Kontrolle genutzt werden.

3️⃣ Falls nach einem Neustart immer noch Probleme bestehen, kann ein startup-Skript mit launchctl helfen.

🔥 Teste zuerst nur brew services & sag mir, ob das Problem dann behoben ist! 🚀

Nikolaos:

Hat nicht funktioniert.

was ist mit folgendem:

If you need to have this software first in your PATH instead consider running:

  echo 'export PATH="/opt/homebrew/opt/mariadb@10.5/bin:$PATH"' >> ~/.zshrc

echo $PATH

/opt/homebrew/opt/mariadb@10.5/bin:/opt/homebrew/opt/mariadb@10.5/bin:/opt/homebrew/opt/php/sbin:/opt/homebrew/opt/php/bin:/opt/homebrew/opt/mysql@8.0/bin:/opt/homebrew/opt/httpd@2.4/bin:/opt/homebrew/opt/php@8.2/sbin:/opt/homebrew/opt/php@8.2/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin

which mysql

/opt/homebrew/opt/mariadb@10.5/bin/mysql

which mariadb

/opt/homebrew/opt/mariadb@10.5/bin/mariadb

aewi@AEWI ~ %

warum ist da mysql und mariadb mit einem unterschiedlichen Path angegeben? Warum ist da überhaupt noch mysql vorhanden?

Wir haben folgende Reihenfolge und mysql@8.0 in /Users/aewi/.zshrc:

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

export PATH="/opt/homebrew/opt/php@8.2/sbin:$PATH"

export PATH="/opt/homebrew/opt/httpd@2.4/bin:$PATH"

export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"

export HOMEBREW_NO_AUTO_UPDATE=1

export PATH="/opt/homebrew/opt/php/bin:$PATH"

export PATH="/opt/homebrew/opt/php/sbin:$PATH"

export PATH="/opt/homebrew/opt/mariadb@10.5/bin:$PATH"

export PATH="/opt/homebrew/opt/mariadb@10.5/bin:$PATH"

3/3

Sophos:


Da haben wir den Fehler gefunden! 🎯

Das Problem entsteht durch zwei unterschiedliche Einträge für MySQL und MariaDB im $PATH. Dies führt dazu, dass dein System an bestimmten Stellen möglicherweise auf eine falsche (alte) Installation verweist.

🔹 1️⃣ Ursache des Problems

Deine aktuelle $PATH-Konfiguration enthält doppelte und widersprüchliche Einträge:

  • /opt/homebrew/opt/mysql@8.0/bin
  • /opt/homebrew/opt/mariadb@10.5/bin (sogar doppelt vorhanden)

👉 Obwohl mysql als Alias für MariaDB existiert, verweist dein System auf beide Pfade. Dies verursacht potenzielle Konflikte, besonders bei phpMyAdmin und MediaWiki.

🔹 2️⃣ Lösung: Pfad korrigieren und aufräumen

Schritt 1: Editiere .zshrc

bash

KopierenBearbeiten

nano ~/.zshrc

Ersetze alle Einträge in deiner .zshrc, die auf MariaDB/MySQL verweisen, durch diesen einzigen Eintrag:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/mariadb@10.5/bin:$PATH"

❗️Entferne unbedingt diese Zeile vollständig:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/mysql@8.0/bin:$PATH"

✅ Speichern (STRG+O) und schließen (STRG+X).

🔹 3️⃣ Aktualisiere die Shell und überprüfe

bash

KopierenBearbeiten

source ~/.zshrc

✅ Prüfe erneut mit:

bash

KopierenBearbeiten

echo $PATH

Erwartetes Ergebnis (ohne MySQL@8.0!):

swift

KopierenBearbeiten

/opt/homebrew/opt/mariadb@10.5/bin:/opt/homebrew/opt/php@8.2/bin:/opt/homebrew/opt/php@8.2/sbin:/opt/homebrew/opt/httpd@2.4/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:...

🔹 4️⃣ Prüfe den Erfolg

bash

KopierenBearbeiten

which mysql

which mariadb

Erwartetes Ergebnis:

swift

KopierenBearbeiten

/opt/homebrew/opt/mariadb@10.5/bin/mysql

/opt/homebrew/opt/mariadb@10.5/bin/mariadb

⚠️ Wichtig: MySQL@8.0 darf nicht mehr im $PATH erscheinen!

🔹 5️⃣ Neustart der Dienste in korrekter Reihenfolge

Um alles sauber neu zu starten:

bash

KopierenBearbeiten

brew services stop php@8.2

brew services stop httpd

brew services stop mariadb@10.5

brew services stop dnsmasq

brew services start dnsmasq

brew services start mariadb@10.5

brew services start httpd

brew services start php@8.2

✅ Überprüfe abschließend den Status erneut:

bash

KopierenBearbeiten

brew services list

🔥 Fazit & Erfolgstest

Durch das Entfernen der veralteten Pfade (mysql@8.0) und die korrekte Reihenfolge für MariaDB im $PATH sollten sich deine bisherigen Probleme endlich lösen.

Teste nun erneut phpMyAdmin und MediaWiki:

👉 phpMyAdmin:

https://pma.aewi.de/phpmyadmin/

👉 MediaWiki:

https://wiki.aewi.de/

🔥 Teste das jetzt und gib mir Bescheid! 🚀

1/2

Nikolaos:

Warum ist da

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

und

export PATH="/opt/homebrew/opt/php/bin:$PATH"

enthalten?

Warum hat php@8.2 nur eine bin aber keine sbin?

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

keine sbin also es ist nicht enthalten:

export PATH="/opt/homebrew/opt/php@8.2/sbin:$PATH"

2/2

Sophos:


Gute Fragen! Lass uns das genau analysieren. 🔍

🔹 1️⃣ Warum gibt es zwei PHP-Pfade?

Dein .zshrc enthält:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

export PATH="/opt/homebrew/opt/php/bin:$PATH"

  • /opt/homebrew/opt/php@8.2/bin → Das ist der spezifische Pfad zu PHP 8.2, falls du mehrere Versionen installiert hast.
  • /opt/homebrew/opt/php/bin → Das ist der allgemeine Symlink, der auf die aktuell installierte Standard-PHP-Version verweist.

👉 Normalerweise reicht einer dieser Einträge aus!

💡 Falls du nur PHP 8.2 nutzen willst, solltest du den generischen php/bin-Pfad entfernen.

✅ Empfohlene Zeile für .zshrc:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

✂️ Entferne:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/php/bin:$PATH"

🔹 2️⃣ Warum gibt es keinen /opt/homebrew/opt/php@8.2/sbin?

Die meisten Homebrew-PHP-Versionen enthalten keine sbin-Verzeichnisse, weil PHP-CLI-Skripte nicht in sbin, sondern in bin liegen.

👉 Überprüfe selbst:

bash

KopierenBearbeiten

ls -lah /opt/homebrew/opt/php@8.2/

Falls dort kein sbin-Ordner existiert, bedeutet das, dass Homebrew diese PHP-Version ohne sbin kompiliert hat.

✅ Lösung:

Falls kein /opt/homebrew/opt/php@8.2/sbin/ existiert, entferne einfach diesen Eintrag aus .zshrc:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/php@8.2/sbin:$PATH"

🔹 3️⃣ Finaler .zshrc-Fix

Hier ist die optimierte .zshrc-Konfiguration für dein Setup:

bash

KopierenBearbeiten

export PATH="/opt/homebrew/opt/php@8.2/bin:$PATH"

export PATH="/opt/homebrew/opt/httpd@2.4/bin:$PATH"

export PATH="/opt/homebrew/opt/mariadb@10.5/bin:$PATH"

export HOMEBREW_NO_AUTO_UPDATE=1

🔥 Speichern (STRG+O, ENTER, STRG+X) und Shell neu laden:

bash

KopierenBearbeiten

source ~/.zshrc

✅ Überprüfe anschließend mit:

bash

KopierenBearbeiten

echo $PATH

which php

which mariadb

which mysql

Erwartete Ergebnisse:

  • /opt/homebrew/opt/php@8.2/bin/php
  • /opt/homebrew/opt/mariadb@10.5/bin/mariadb
  • /opt/homebrew/opt/mariadb@10.5/bin/mysql

🎯 Fazit

  • Doppelter PHP-Pfad entfernt (php/bin wird nicht benötigt).
  • sbin entfernt, da es für PHP 8.2 nicht existiert.
  • Homebrew-MySQL entfernt, damit nur noch MariaDB genutzt wird.
  • Reihenfolge optimiert, damit alle Dienste korrekt geladen werden.

🚀 Teste das jetzt & sag mir Bescheid, ob es funktioniert!

Nikolaos:

Der Fehler bleibt. Wir haben also etwas jedoch nicht den Fehler gefunden.

phpmyadmin: mysqli::real_connect(): (HY000/2002): No such file or directory

Sophos:


Da der Fehler "mysqli::real_connect(): (HY000/2002): No such file or directory" immer noch besteht, bedeutet das, dass PHP nicht mit MariaDB kommunizieren kann.

Lass uns gezielt nach der Ursache suchen! 🔍

✅ 1️⃣ Erste Überprüfung: Funktioniert PHPs MySQL-Erweiterung?

Führe diesen Befehl aus:

bash

KopierenBearbeiten

php -i | grep -i mysql

🔹 Erwartetes Ergebnis:

  • Es sollte nicht leer sein!
  • Falls PHP MySQL nicht erkennt, dann fehlt die PHP-MySQL-Erweiterung.

Falls keine Ausgabe kommt, installiere MySQL für PHP:

bash

KopierenBearbeiten

brew install php-mysql

brew services restart php@8.2

Teste dann erneut:

bash

KopierenBearbeiten

php -i | grep -i mysql

✅ 2️⃣ Überprüfung der MySQL-Socket-Einstellungen in PHP

Führe diesen Befehl aus:

bash

KopierenBearbeiten

php -i | grep -i default_socket

🔹 Erwartetes Ergebnis:

plaintext

KopierenBearbeiten

pdo_mysql.default_socket => /opt/homebrew/var/mariadb/mariadb.sock

mysqli.default_socket => /opt/homebrew/var/mariadb/mariadb.sock

mysql.default_socket => /opt/homebrew/var/mariadb/mariadb.sock

Falls ein falscher Wert wie /tmp/mysql.sock erscheint, dann muss das in php.ini korrigiert werden.

👉 Schritt 1: Editiere PHPs php.ini

bash

KopierenBearbeiten

nano /opt/homebrew/etc/php/8.2/php.ini

🔹 Füge oder ändere diese Zeilen:

ini

KopierenBearbeiten

pdo_mysql.default_socket=/opt/homebrew/var/mariadb/mariadb.sock

mysqli.default_socket=/opt/homebrew/var/mariadb/mariadb.sock

mysql.default_socket=/opt/homebrew/var/mariadb/mariadb.sock

Speichern (STRG+O, ENTER, STRG+X).

👉 Schritt 2: PHP neu starten

bash

KopierenBearbeiten

brew services restart php@8.2

👉 Schritt 3: Teste erneut

bash

KopierenBearbeiten

php -i | grep -i default_socket

Falls der Wert jetzt /opt/homebrew/var/mariadb/mariadb.sock ist, dann probiere erneut phpMyAdmin!

✅ 3️⃣ Überprüfung der config.inc.php von phpMyAdmin

Falls phpMyAdmin noch immer nicht funktioniert, überprüfe die Konfiguration:

bash

KopierenBearbeiten

nano /opt/homebrew/share/phpmyadmin/config.inc.php

🔹 Stelle sicher, dass diese Zeilen enthalten sind:

php

KopierenBearbeiten

$cfg['Servers'][$i]['host'] = '127.0.0.1';

$cfg['Servers'][$i]['socket'] = '/opt/homebrew/var/mariadb/mariadb.sock';

$cfg['Servers'][$i]['port'] = '3306';

$cfg['Servers'][$i]['connect_type'] = 'socket';

$cfg['Servers'][$i]['compress'] = false;

$cfg['Servers'][$i]['AllowNoPassword'] = false;

👉 Danach Apache neu starten

bash

KopierenBearbeiten

brew services restart httpd

🚀 Teste phpMyAdmin erneut! Falls es immer noch nicht geht, überprüfe die Apache-Fehlerlogs:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/log/httpd/*.log

✅ 4️⃣ Finaler Test: Funktioniert eine Direktverbindung mit PHP?

Falls phpMyAdmin immer noch nicht geht, dann testen wir eine manuelle PHP-Verbindung zu MariaDB.

👉 Erstelle eine Testdatei

bash

KopierenBearbeiten

nano /opt/homebrew/share/phpmyadmin/test_db.php

🔹 Füge folgenden Code ein:

php

KopierenBearbeiten

<?php

$mysqli = new mysqli('127.0.0.1', 'root', 'DEINPASSWORT', '', 3306, '/opt/homebrew/var/mariadb/mariadb.sock');

if ($mysqli->connect_error) {

    die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);

} else {

    echo "Verbindung erfolgreich!";

}

?>

📌 Speichern (STRG+O, ENTER, STRG+X).

👉 Testen:

Öffne https://pma.aewi.de/test_db.php in deinem Browser.

🔹 Erwartetes Ergebnis:

"Verbindung erfolgreich!"

Falls ein Fehler kommt, liegt das Problem entweder bei:

  • Der Socket-Verbindung (Punkt 2️⃣ nochmals prüfen)
  • Den Benutzerrechten in MariaDB (SELECT user, host FROM mysql.user; prüfen)

🔥 Fazit

1️⃣ PHP muss MySQL korrekt geladen haben → php -i | grep -i mysql testen.

2️⃣ Die MySQL-Socket-Pfade müssen stimmen → php.ini & config.inc.php korrigieren.

3️⃣ Falls phpMyAdmin nicht geht, teste eine einfache test_db.php-Verbindung.

4️⃣ Apache & PHP nach jeder Änderung neustarten!

🚀 Führe diese Schritte aus und sag mir das Ergebnis! 💪

Nikolaos:

1. php -i | grep -i mysql

mysqli.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

mysqli nutzt also weiterhin  "/tmp/mysql.sock"?

2. wird da auf zwei verschiedene Datenbanken verwiesen?

2.1 which mysql

/opt/homebrew/opt/mariadb@10.5/bin/mysql

2.2 which mariadb

/opt/homebrew/opt/mariadb@10.5/bin/mariadb

Sophos:


Ja, hier sind zwei Probleme erkennbar:

🚨 Problem 1: PHP verwendet den falschen MySQL-Socket (/tmp/mysql.sock statt /opt/homebrew/var/mariadb/mariadb.sock)

Das bedeutet, dass PHP immer noch nicht mit der richtigen MariaDB-Installation verbunden ist.

✅ Lösung: Korrigiere die Socket-Pfade in php.ini

1️⃣ Öffne die PHP-Konfigurationsdatei:

bash

KopierenBearbeiten

nano /opt/homebrew/etc/php/8.2/php.ini

2️⃣ Finde und ersetze folgende Zeilen:

ini

KopierenBearbeiten

mysqli.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

pdo_mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

3️⃣ Speichern & schließen (STRG+O, ENTER, STRG+X).

4️⃣ PHP neu starten:

bash

KopierenBearbeiten

brew services restart php@8.2

5️⃣ Testen, ob der Pfad nun korrekt ist:

bash

KopierenBearbeiten

php -i | grep -i mysql

👉 Erwartetes Ergebnis:

ini

KopierenBearbeiten

mysqli.default_socket => /opt/homebrew/var/mariadb/mariadb.sock

Falls weiterhin /tmp/mysql.sock angezeigt wird, dann:

bash

KopierenBearbeiten

sudo launchctl stop homebrew.mxcl.php@8.2

sudo launchctl start homebrew.mxcl.php@8.2

🚀 Teste danach phpMyAdmin erneut!

🚨 Problem 2: MySQL und MariaDB haben unterschiedliche Pfade

Hier ist der Konflikt:

  • which mysql → /opt/homebrew/opt/mariadb@10.5/bin/mysql
  • which mariadb → /opt/homebrew/opt/mariadb@10.5/bin/mariadb

Das ist kein direkter Fehler, aber es kann verwirrend sein. Homebrew hat mysql als Symlink für MariaDB gesetzt. Falls du sicherstellen willst, dass alles korrekt funktioniert, prüfe:

👉 Welches MySQL-Programm verwendet wird:

bash

KopierenBearbeiten

mysql --version

mariadb --version

Falls mysql --version MariaDB anzeigt, dann ist alles korrekt.

Falls stattdessen noch ein MySQL 8.0 auftaucht, entferne es mit:

bash

KopierenBearbeiten

brew uninstall mysql@8.0

brew unlink mysql@8.0

brew cleanup

Danach sicherstellen, dass MariaDB verwendet wird:

bash

KopierenBearbeiten

brew link --force --overwrite mariadb@10.5

🚀 Teste phpMyAdmin nach diesen Änderungen erneut!

Nikolaos:

Wenn "pdo_mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock" für den lokalen Zugriff ist, was ist der für den remote Zugriff oder den Zugriff über VPN https://pma.aewi.de…?

Sophos:


Für den Remote-Zugriff oder den Zugriff über VPN (z. B. https://pma.aewi.de), wird kein Socket (.sock-Datei) verwendet, sondern die Verbindung erfolgt über TCP/IP.

Das bedeutet, dass pdo_mysql.default_socket nur für lokale Verbindungen verwendet wird.

👉 Für den Fernzugriff müssen wir den Hostnamen & die Port-Einstellungen richtig setzen.

✅ Lösung: PHP & phpMyAdmin für Remote-Zugriff über VPN konfigurieren

1️⃣ MySQL-Socket für lokale Verbindungen behalten

In php.ini bleibt für lokale Verbindungen:

ini

KopierenBearbeiten

pdo_mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

mysqli.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

mysql.default_socket = /opt/homebrew/var/mariadb/mariadb.sock

🚀 Diese Werte sind nur für 127.0.0.1 oder localhost relevant.

2️⃣ Remote-Zugriff über VPN oder externen Host

Für https://pma.aewi.de muss MariaDB auf einer IP-Adresse erreichbar sein. Standardmäßig bindet sich MariaDB nur an 127.0.0.1, also kein externer Zugriff erlaubt!

👉 Lösung: In my.cnf (MariaDB-Konfiguration) erlauben wir den Fernzugriff:

bash

KopierenBearbeiten

nano /opt/homebrew/etc/my.cnf

Ändere folgende Zeilen:

ini

KopierenBearbeiten

[mysqld]

bind-address = 0.0.0.0

port = 3306

🚀 Das erlaubt den Zugriff von externen Geräten (z. B. über VPN oder LAN).

👉 Starte MariaDB neu, damit die Änderungen aktiv werden:

bash

KopierenBearbeiten

brew services restart mariadb@10.5

3️⃣ phpMyAdmin für Remote-Host konfigurieren

Falls phpMyAdmin über VPN genutzt wird, muss der Remote-Host gesetzt sein.

👉 Öffne die config.inc.php von phpMyAdmin:

bash

KopierenBearbeiten

nano /opt/homebrew/share/phpmyadmin/config.inc.php

🔹 Füge einen neuen Server-Eintrag für Remote-Zugriff hinzu:

php

KopierenBearbeiten

$i++;

$cfg['Servers'][$i]['host'] = 'pma.aewi.de'; // VPN oder Remote-Host

$cfg['Servers'][$i]['port'] = '3306'; // Standard-Port für MariaDB

$cfg['Servers'][$i]['connect_type'] = 'tcp';

$cfg['Servers'][$i]['AllowNoPassword'] = false;

$cfg['Servers'][$i]['user'] = 'root';

$cfg['Servers'][$i]['password'] = 'DEIN_PASSWORT';

👉 Danach Apache neu starten, damit phpMyAdmin die Änderungen übernimmt:

bash

KopierenBearbeiten

brew services restart httpd

✅ 4️⃣ Letzter Test: Verbindung aus der Ferne

Teste jetzt über dein VPN:

bash

KopierenBearbeiten

mysql -u root -p -h pma.aewi.de

🔹 Falls kein Fehler kommt, funktioniert der Zugriff über VPN.

🔹 Falls "Access denied", dann muss MariaDB den Zugriff erlauben:

sql

KopierenBearbeiten

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'DEIN_PASSWORT' WITH GRANT OPTION;

FLUSH PRIVILEGES;

🚀 Nun sollte phpMyAdmin unter https://pma.aewi.de funktionieren!

🔥 Fazit

✅ Lokale Verbindungen nutzen weiterhin den Socket (mariadb.sock).

✅ Remote-Verbindungen über VPN nutzen TCP/IP (bind-address = 0.0.0.0).

✅ phpMyAdmin muss für den Remote-Host konfiguriert sein.

🚀 Teste die Änderungen und gib mir dein Feedback! 💪

Nikolaos:

Fehler ist nun behoben.

Wir haben offenbar die ganze Zeit an MariaDB rumgebastelt obwohl es php die Path und .zshrc war.

Der Zugang über VPN und lokal mittels "https://aewi.de/phpmyadmin/index.php?" ist nun möglich, sollte aber "https://pma.aewi.de/phpmyadmin/index.php?" sein, also "https://pma.aewi.de…" und nicht "https://aewi.de…"

Was muß dazu geändert werden?

httpd-vhosts.conf ist richtig konfiguriert.

in httpd.conf ist folgendes aktiv:

Include /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

Include /opt/homebrew/etc/httpd/extra/proxy-html.conf

Include /opt/homebrew/etc/httpd/extra/httpd-ssl.conf

Include /opt/homebrew/etc/httpd/extra/httpd-phpmyadmin.conf

in dnsmasq.conf ist folgendes aktiv:

address=/aewi.de/192.168.2.3

address=/wiki.aewi.de/192.168.2.3

address=/api.aewi.de/192.168.2.3

address=/pma.aewi.de/192.168.2.3

address=/phpmyadmin/192.168.2.3

in config.inc.php ist folgendes aktiv:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

Welche Einträge sind falsch oder fehlen?

address=/aewi.de/192.168.2.3 soll spotter die home-Website sein.

Sudomains sollen die verschiedenen Dienste direkt ansprechen.

2/2

Sophos:


✅ Lösung: phpMyAdmin auf pma.aewi.de umleiten

Der Fehler liegt vermutlich daran, dass phpMyAdmin noch unter aewi.de läuft, obwohl du es unter pma.aewi.dehaben möchtest.

Wir müssen sicherstellen, dass:

  1. Apache die Subdomain pma.aewi.de korrekt verarbeitet.
  2. phpMyAdmin nur unter pma.aewi.de läuft.
  3. dnsmasq die Domain-Zuordnung korrekt macht.

1️⃣ HTTPD: VirtualHost für pma.aewi.de

📌 Bearbeite die Datei /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

bash

KopierenBearbeiten

nano /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

🚀 Ändere oder ergänze folgenden Eintrag für pma.aewi.de:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName pma.aewi.de

    DocumentRoot "/opt/homebrew/share/phpmyadmin"

    <Directory "/opt/homebrew/share/phpmyadmin">

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/pma_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/pma_access.log" common

</VirtualHost>

🔥 Speichern & schließen (STRG+O, ENTER, STRG+X).

🚀 Apache neu starten:

bash

KopierenBearbeiten

brew services restart httpd

2️⃣ dnsmasq: Sicherstellen, dass pma.aewi.de richtig aufgelöst wird

📌 Bearbeite die Datei /opt/homebrew/etc/dnsmasq.conf

bash

KopierenBearbeiten

nano /opt/homebrew/etc/dnsmasq.conf

🔹 Stelle sicher, dass die folgende Zeile enthalten ist:

ini

KopierenBearbeiten

address=/pma.aewi.de/192.168.2.3

🚀 dnsmasq neu starten:

bash

KopierenBearbeiten

brew services restart dnsmasq

3️⃣ phpMyAdmin: Hostname anpassen

📌 Bearbeite die Datei /opt/homebrew/share/phpmyadmin/config.inc.php

bash

KopierenBearbeiten

nano /opt/homebrew/share/phpmyadmin/config.inc.php

🔹 Setze den Host explizit auf pma.aewi.de:

php

KopierenBearbeiten

$cfg['Servers'][$i]['host'] = 'pma.aewi.de';

🚀 Speichern & schließen (STRG+O, ENTER, STRG+X).

🚀 Apache erneut neu starten:

bash

KopierenBearbeiten

brew services restart httpd

4️⃣ Letzter Test

🔹 Öffne in deinem Browser:

👉 https://pma.aewi.de/phpmyadmin/index.php

👉 Falls es nicht funktioniert, prüfe mit:

bash

KopierenBearbeiten

nslookup pma.aewi.de

👉 Falls nslookup nicht 192.168.2.3 zurückgibt, leere den DNS-Cache:

bash

KopierenBearbeiten

sudo dscacheutil -flushcache

sudo killall -HUP mDNSResponder

🚀 Jetzt sollte phpMyAdmin nur noch unter pma.aewi.de erreichbar sein! 🎯

Nikolaos:

Die einzige Änderung war also "$cfg['Servers'][$i]['host'] = 'pma.aewi.de';"

Nun kann ich mich dennoch mit "https://pma.aewi.de…" und "https://aewi.de…" anmelden.

Was muß ich ändern, damit ich nur  über "https://pma.aewi.de…" phpmyadmin nutzen kann?

Sophos:


Um sicherzustellen, dass phpMyAdmin nur über https://pma.aewi.de erreichbar ist, müssen wir zwei Dinge tun:

  1. Apache blockiert phpMyAdmin-Zugriff über aewi.de.
  2. phpMyAdmin leitet alle Anfragen auf pma.aewi.de um.

1️⃣ Apache: Zugriff auf phpMyAdmin nur für pma.aewi.de erlauben

📌 Öffne die Datei /opt/homebrew/etc/httpd/extra/httpd-phpmyadmin.conf

bash

KopierenBearbeiten

nano /opt/homebrew/etc/httpd/extra/httpd-phpmyadmin.conf

🚀 Füge folgende Regeln hinzu:

apache

KopierenBearbeiten

<Directory "/opt/homebrew/share/phpmyadmin">

    Require all denied

</Directory>

<VirtualHost *:443>

    ServerName pma.aewi.de

    DocumentRoot "/opt/homebrew/share/phpmyadmin"

    <Directory "/opt/homebrew/share/phpmyadmin">

        Require all granted

        AllowOverride All

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/pma_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/pma_access.log" common

</VirtualHost>

📌 Speichern & schließen (STRG+O, ENTER, STRG+X).

🚀 Apache neu starten:

bash

KopierenBearbeiten

brew services restart httpd

🔹 Jetzt ist phpMyAdmin nur noch unter pma.aewi.de erreichbar!

🔹 Falls jemand https://aewi.de/phpmyadmin/ aufruft, erhält er eine Zugriff verweigert (403 Forbidden) Meldung.

2️⃣ Optional: Automatische Weiterleitung zu pma.aewi.de

Falls du möchtest, dass Anfragen an aewi.de/phpmyadmin/ automatisch zu pma.aewi.de umgeleitet werden, dann:

📌 Öffne /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf:

bash

KopierenBearbeiten

nano /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

🔹 Füge am Ende diese Zeilen hinzu:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName aewi.de

    Redirect 301 /phpmyadmin https://pma.aewi.de/phpmyadmin

</VirtualHost>

🚀 Apache erneut neu starten:

bash

KopierenBearbeiten

brew services restart httpd

🔥 Fazit

✅ phpMyAdmin ist nur über https://pma.aewi.de erreichbar.

✅ Falls jemand https://aewi.de/phpmyadmin aufruft, wird er umgeleitet oder blockiert.

🎯 Teste jetzt & gib mir dein Feedback! 🚀

Nikolaos:

zu 1. Apache: Zugriff auf phpMyAdmin nur für pma.aewi.de erlauben

du gibst da httpd-phpmyadmin.conf an, ist es nicht richtiger dies in httpd-vhost.conf einzufügen?

in httpd-phpmyadmin.conf steht nur folgendes:

Alias /phpmyadmin /opt/homebrew/share/phpmyadmin

<Directory /opt/homebrew/share/phpmyadmin/>

    Options Indexes FollowSymLinks MultiViews

    AllowOverride All

    Require all granted

</Directory>

Sophos:


Ja, du hast recht! Die VirtualHost-Konfiguration gehört in die httpd-vhosts.conf, nicht in httpd-phpmyadmin.conf.

Die httpd-phpmyadmin.conf sollte nur für das Alias und die grundlegenden Zugriffsrechte sorgen. Die eigentliche Zugriffsbeschränkung und Umleitung müssen wir in httpd-vhosts.conf umsetzen.

✅ Korrekte Konfiguration in httpd-vhosts.conf

📌 Öffne die Datei /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

bash

KopierenBearbeiten

nano /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf

🚀 Füge folgende Einträge hinzu oder passe bestehende an:

apache

KopierenBearbeiten

# Erlaubt phpMyAdmin NUR über pma.aewi.de

<VirtualHost *:443>

    ServerName pma.aewi.de

    DocumentRoot "/opt/homebrew/share/phpmyadmin"

    <Directory "/opt/homebrew/share/phpmyadmin">

        Require all granted

        AllowOverride All

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/pma_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/pma_access.log" common

</VirtualHost>

# Blockiert den Zugriff auf phpMyAdmin über aewi.de

<VirtualHost *:443>

    ServerName aewi.de

    <Directory "/opt/homebrew/share/phpmyadmin">

        Require all denied

    </Directory>

</VirtualHost>

📌 Speichern & schließen (STRG+O, ENTER, STRG+X).

🚀 Apache neu starten:

bash

KopierenBearbeiten

brew services restart httpd

🔥 Was passiert jetzt?

✅ phpMyAdmin ist nur über https://pma.aewi.de/phpmyadmin erreichbar.

✅ Falls jemand https://aewi.de/phpmyadmin aufruft, erhält er eine "403 Forbidden" Fehlermeldung.

🔁 Alternative: Automatische Weiterleitung

Falls du nicht blockieren, sondern automatisch umleiten möchtest, ersetze diesen Block:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName aewi.de

    <Directory "/opt/homebrew/share/phpmyadmin">

        Require all denied

    </Directory>

</VirtualHost>

durch:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName aewi.de

    Redirect 301 /phpmyadmin https://pma.aewi.de/phpmyadmin

</VirtualHost>

📌 Apache erneut neu starten:

bash

KopierenBearbeiten

brew services restart httpd

🔹 Jetzt wird jede Anfrage an https://aewi.de/phpmyadmin automatisch zu https://pma.aewi.de/phpmyadminumgeleitet.

🎯 Fazit

🔹 Methode 1 (403 Forbidden) = phpMyAdmin auf aewi.de ist blockiert.

🔹 Methode 2 (Redirect 301) = Alle Anfragen an aewi.de/phpmyadmin werden umgeleitet.

✨ Wähle, was für dich am besten passt! 🚀

Nikolaos:

Ich habe rebdirekt wie folgt in httpd-vhosts.conf für phpmyadmin und mediawiki eingegeben:

<VirtualHost *:443>

    ServerName aewi.de

    ServerAlias www.aewi.de

    # Redirect phpMyAdmin

    Redirect 301 /phpmyadmin https://pma.aewi.de/phpmyadmin

    # Redirect MediaWiki

    Redirect 301 /mediawiki https://wiki.aewi.de

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/aewi_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/aewi_access.log" common

</VirtualHost>

Wenn ich das tue, kann ich die Seiten lokal jedoch nicht über wireguard aufrufen. Was ist an der Konfiguration falsch? oder was muß ich für wireguard ergänzen oder ändern?

Müssen die Einträge an einer bestimmten Stelle sein, damit sie funktionieren?

DNS ist dnsmasq. Intern wird kein VPN genutzt. Wenn von Außen über VPN Anfragen hereinkommen, werden diese offenbar nicht aufgelöst und an die Subdomain weitergeleitet. Es könnte also eine Einstellung in dnsmasq oder wireguard sein.

3/3

Sophos:


Damit phpMyAdmin und MediaWiki über VPN (WireGuard) korrekt erreichbar sind, müssen wir sicherstellen, dass:

  1. WireGuard-Clients die korrekten DNS-Einträge erhalten.
  2. Apache die Anfragen aus dem VPN-Netz richtig verarbeitet.
  3. dnsmasq korrekt für VPN-Clients auflöst.
  4. Die Redirect-Regeln richtig greifen.

🔹 1. WireGuard-Clients müssen die korrekten DNS-Einträge erhalten

📌 Öffne die WireGuard-Konfiguration auf dem Server:

bash

KopierenBearbeiten

sudo nano /etc/wireguard/wg0.conf

🔹 Füge sicherheitshalber dnsmasq als DNS-Server hinzu:

ini

KopierenBearbeiten

[Interface]

Address = 10.0.0.1/24

ListenPort = 51820

PrivateKey = SERVER_PRIVATE_KEY

DNS = 192.168.2.3   # Dein DNS-Server mit dnsmasq

📌 Speichern & WireGuard neu starten:

bash

KopierenBearbeiten

sudo systemctl restart wg-quick@wg0

🚀 Überprüfe auf einem VPN-Client:

bash

KopierenBearbeiten

nslookup pma.aewi.de

nslookup wiki.aewi.de

Erwartetes Ergebnis: 192.168.2.3

🔹 2. Apache VirtualHosts für VPN erweitern

📌 Ändere die httpd-vhosts.conf, um auch VPN-Anfragen zu verarbeiten.

bash

KopierenBearbeiten

<VirtualHost *:443>

    ServerName aewi.de

    ServerAlias www.aewi.de

    # Redirects

    Redirect 301 /phpmyadmin https://pma.aewi.de/phpmyadmin

    Redirect 301 /mediawiki https://wiki.aewi.de

    # Erlaubt Zugriffe aus VPN-Netz

    <Directory "/opt/homebrew/share/phpmyadmin">

        Require ip 192.168.2.0/24

        Require ip 10.0.0.0/24  # Falls VPN-Netz in 10.0.0.x liegt

    </Directory>

    <Directory "/Library/WebServer/Documents">

        Require ip 192.168.2.0/24

        Require ip 10.0.0.0/24

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/aewi_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/aewi_access.log" common

</VirtualHost>

📌 Speichern & Apache neu starten:

bash

KopierenBearbeiten

brew services restart httpd

🚀 Jetzt sollten auch VPN-Clients Zugriff haben.

🔹 3. dnsmasq muss VPN-Clients auflösen

📌 Öffne dnsmasq.conf:

bash

KopierenBearbeiten

sudo nano /opt/homebrew/etc/dnsmasq.conf

🔹 Ergänze sicherheitshalber die VPN-Clients:

ini

KopierenBearbeiten

address=/pma.aewi.de/192.168.2.3

address=/wiki.aewi.de/192.168.2.3

listen-address=192.168.2.3

listen-address=10.0.0.1

📌 dnsmasq neu starten:

bash

KopierenBearbeiten

brew services restart dnsmasq

🚀 Überprüfe von einem VPN-Client:

bash

KopierenBearbeiten

nslookup wiki.aewi.de

nslookup pma.aewi.de

✅ Sollte 192.168.2.3 liefern.

🔹 4. Firewall prüfen (falls nötig)

Falls du macOS‘ pf-Firewall oder eine andere Firewall nutzt, überprüfe, ob Port 443 für VPN-Clients erlaubt ist:

bash

KopierenBearbeiten

sudo pfctl -sr | grep 443

Falls nichts zurückkommt, kannst du eine Regel setzen:

bash

KopierenBearbeiten

echo "pass in on en0 proto tcp from 10.0.0.0/24 to any port 443" | sudo pfctl -f -

🔹 🔥 Fazit

🔹 WireGuard-Clients erhalten nun korrekte DNS-Infos.

🔹 Apache akzeptiert Zugriffe von VPN-Clients.

🔹 dnsmasq löst VPN-Anfragen richtig auf.

🔹 Firewall-Regeln sind geprüft.

✨ Jetzt testen! 🚀

Nikolaos:

dnsmasq ist derzeit: listen-address=127.0.0.1,192.168.2.3

was bewirkt "listen-address=10.0.0.1" anstelle von "listen-address=127.0.0.1"

Sophos:


📌 Wirkung von listen-address in dnsmasq.conf

🔹 Derzeitige Konfiguration:

ini

KopierenBearbeiten

listen-address=127.0.0.1,192.168.2.3

✅ Bedeutet, dass dnsmasq nur auf localhost (127.0.0.1) und im LAN (192.168.2.3)` Anfragen annimmt.

❌ VPN-Clients (10.0.0.x) können DNS-Anfragen möglicherweise nicht auflösen.

🔹 Alternative: listen-address=10.0.0.1

ini

KopierenBearbeiten

listen-address=10.0.0.1

✅ dnsmasq hört nur auf dem VPN-Interface

❌ Lokale Anfragen aus 127.0.0.1 oder 192.168.2.3 würden nicht beantwortet.

⚠️ Das wäre ein Problem für lokale Dienste.

🔹 Empfohlene Konfiguration für LAN + VPN

✅ Falls VPN-Clients auch Anfragen an dnsmasq senden sollen, ergänze 10.0.0.1:

ini

KopierenBearbeiten

listen-address=127.0.0.1,192.168.2.3,10.0.0.1

🔹 Jetzt kann dnsmasq Anfragen von lokalen Diensten (127.0.0.1), LAN (192.168.2.3) und VPN-Clients (10.0.0.1) bearbeiten.

🔹 Erforderlich, wenn WireGuard-Clients auch pma.aewi.de und wiki.aewi.de korrekt auflösen sollen.

🚀 So testen, ob VPN-Clients pma.aewi.de richtig auflösen können:

1️⃣ Auf einem VPN-Client (über WireGuard) ausführen:

bash

KopierenBearbeiten

nslookup pma.aewi.de 10.0.0.1

✅ Erwartete Antwort:

bash

KopierenBearbeiten

Server: 10.0.0.1

Address: 10.0.0.1#53

Name: pma.aewi.de

Address: 192.168.2.3

❌ Falls keine oder eine falsche IP zurückkommt, liegt das Problem entweder an dnsmasq oder der VPN-Konfiguration.

🔥 Fazit

  • Aktuelle Einstellung (127.0.0.1,192.168.2.3) erlaubt KEINE DNS-Anfragen über VPN.
  • Empfohlen: listen-address=127.0.0.1,192.168.2.3,10.0.0.1, damit VPN-Clients pma.aewi.de und wiki.aewi.de auflösen können.
  • Nach Änderung dnsmasq neu starten: bash KopierenBearbeiten brew services restart dnsmasq

Nikolaos:

Kann man nicht aewi.de mit etwas belegen, so daß keine rebdirect's erforderlich sind, weil da ein Dienst läuft, z.b. Homepage?

AEWI Homepage unter /Library/WebServer/Documents/aewi/index.html

2/2

Sophos:


AEWI Homepage unter aewi.de ohne Redirects einrichten

Ja, das ist möglich! Anstatt Redirects für aewi.de zu nutzen, kannst du dort eine eigene Website (z. B. deine AEWI-Homepage) hosten. Hier ist die richtige Konfiguration:

1️⃣ Apache Virtual Host für aewi.de mit Homepage

Öffne die Datei /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf und ändere oder füge Folgendes hinzu:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerAdmin webmaster@aewi.de

    ServerName aewi.de

    ServerAlias www.aewi.de

    DocumentRoot "/Library/WebServer/Documents/aewi"

    <Directory "/Library/WebServer/Documents/aewi">

        Options Indexes FollowSymLinks MultiViews

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/aewi_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/aewi_access.log" common

</VirtualHost>

📌 Erläuterung:

  • DocumentRoot "/Library/WebServer/Documents/aewi" sorgt dafür, dass aewi.de die dort gespeicherten Inhalte (z. B. index.html) lädt.
  • Keine Redirects – aewi.de zeigt eine echte Website an.
  • SSL ist aktiviert, sodass https://aewi.de funktioniert.

2️⃣ Virtual Hosts für Subdomains (pma.aewi.de, wiki.aewi.de)

Damit pma.aewi.de und wiki.aewi.de weiterhin auf phpMyAdmin bzw. MediaWiki verweisen, brauchst du folgende Virtual Hosts in httpd-vhosts.conf:

📌 phpMyAdmin unter pma.aewi.de

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerAdmin webmaster@aewi.de

    ServerName pma.aewi.de

    DocumentRoot "/opt/homebrew/share/phpmyadmin"

    <Directory "/opt/homebrew/share/phpmyadmin">

        Options Indexes FollowSymLinks MultiViews

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/pma_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/pma_access.log" common

</VirtualHost>

📌 MediaWiki unter wiki.aewi.de

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerAdmin webmaster@aewi.de

    ServerName wiki.aewi.de

    DocumentRoot "/Library/WebServer/Documents/wiki"

    <Directory "/Library/WebServer/Documents/wiki">

        Options Indexes FollowSymLinks MultiViews

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/wiki_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/wiki_access.log" common

</VirtualHost>

3️⃣ Änderungen in dnsmasq.conf

Damit auch das DNS korrekt aufgelöst wird, solltest du sicherstellen, dass dnsmasq für aewi.de, pma.aewi.de und wiki.aewi.de auf die richtige IP zeigt.

📌 Prüfe /opt/homebrew/etc/dnsmasq.conf und ergänze oder überprüfe folgende Zeilen:

ini

KopierenBearbeiten

address=/aewi.de/192.168.2.3

address=/wiki.aewi.de/192.168.2.3

address=/api.aewi.de/192.168.2.3

address=/pma.aewi.de/192.168.2.3

🔹 Falls Änderungen gemacht wurden, dnsmasq neu starten:

bash

KopierenBearbeiten

brew services restart dnsmasq

4️⃣ Apache Neustart

Nach diesen Änderungen Apache neu starten:

bash

KopierenBearbeiten

brew services restart httpd

5️⃣ Testen

📌 Testen im Browser

  • https://aewi.de → Sollte deine AEWI-Homepage anzeigen
  • https://pma.aewi.de → Sollte phpMyAdmin öffnen
  • https://wiki.aewi.de → Sollte MediaWiki öffnen

📌 Überprüfen mit nslookup oder dig

Falls etwas nicht geht, prüfe, ob die Domains korrekt aufgelöst werden:

bash

KopierenBearbeiten

nslookup aewi.de

nslookup pma.aewi.de

nslookup wiki.aewi.de

✅ Sollte 192.168.2.3 zurückgeben.

🔥 Fazit

  • KEINE Redirects mehr erforderlich!
  • aewi.de hat jetzt eine richtige Homepage (/Library/WebServer/Documents/aewi)
  • phpMyAdmin (pma.aewi.de) und MediaWiki (wiki.aewi.de) sind als eigene Subdomains erreichbar.
  • Apache, dnsmasq und MariaDB arbeiten sauber zusammen. 🚀

Nikolaos:

OK. welche Änderungen benötigt http.conf damit ich bei Aufruf von aewi.de auf https://aewi.de/index.html lande?

muß ich DocumentRoot "/Library/WebServer/Documents", dann nicht auf DocumentRoot "/Library/WebServer/Documents/aewi" ändern?

2/2

Sophos:


Ja, du musst die DocumentRoot-Einstellung in httpd.conf oder deiner httpd-vhosts.conf so ändern, dass sie direkt auf das Verzeichnis zeigt, in dem sich die index.html deiner AEWI-Homepage befindet.

1️⃣ httpd-vhosts.conf anpassen

Falls du Virtual Hosts nutzt (empfohlen), ändere oder erstelle folgenden Eintrag in /opt/homebrew/etc/httpd/extra/httpd-vhosts.conf:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerAdmin webmaster@aewi.de

    ServerName aewi.de

    ServerAlias www.aewi.de

    DocumentRoot "/Library/WebServer/Documents/aewi"

    <Directory "/Library/WebServer/Documents/aewi">

        Options Indexes FollowSymLinks MultiViews

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/aewi_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/aewi_access.log" common

</VirtualHost>

🔹 Wichtige Änderungen:

  • DocumentRoot "/Library/WebServer/Documents/aewi" verweist direkt auf den Ordner mit der index.html
  • <Directory "/Library/WebServer/Documents/aewi"> gibt Zugriff auf dieses Verzeichnis

2️⃣ Falls kein VirtualHost genutzt wird – httpd.conf anpassen

Falls du keinen VirtualHost für aewi.de nutzt, kannst du die Einstellung direkt in /opt/homebrew/etc/httpd/httpd.conf ändern:

Suche nach:

apache

KopierenBearbeiten

DocumentRoot "/Library/WebServer/Documents"

<Directory "/Library/WebServer/Documents">

Und ersetze es durch:

apache

KopierenBearbeiten

DocumentRoot "/Library/WebServer/Documents/aewi"

<Directory "/Library/WebServer/Documents/aewi">

Speichern und schließen.

3️⃣ Apache und DNS neu starten

Nach den Änderungen musst du Apache und dnsmasq neu starten:

bash

KopierenBearbeiten

brew services restart dnsmasq

brew services restart httpd

Falls du eine Firewall oder WireGuard verwendest, stelle sicher, dass aewi.de in der internen DNS-Konfiguration richtig weitergeleitet wird.

4️⃣ Testen

  1. Rufe https://aewi.de in deinem Browser auf – es sollte nun die index.html aus /Library/WebServer/Documents/aewi geladen werden.
  2. Falls der Browser noch eine alte Weiterleitung nutzt, lösche den Cache:
    • Strg + Shift + Entf (Windows/Linux) oder Cmd + Shift + Entf (Mac)
    • Oder öffne die Seite im Inkognito-Modus.

Falls die Startseite nicht geladen wird, überprüfe die Apache-Logs:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/log/httpd/aewi_error.log

🔥 Fazit

  • aewi.de zeigt jetzt die richtige index.html-Datei aus /Library/WebServer/Documents/aewi an.
  • Falls du httpd-vhosts.conf nutzt, sind keine weiteren Änderungen an httpd.conf nötig.
  • Apache muss nach den Änderungen neu gestartet werden.

✅ Ergebnis: https://aewi.de lädt die Homepage ohne Redirects. 🚀

Nikolaos:

Homepage funktioniert jetzt.

Welche Konfiguration brauche ich jetzt für  Mediawiki LocalSettings.php?

Derzeit für den Anbindung enthalten ist:

# Protect against web entry

if ( !defined( 'MEDIAWIKI' ) ) {

exit;

}

## Uncomment this to disable output compression

# $wgDisableOutputCompression = true;

$wgSitename = "AufEinWort";

$wgMetaNamespace = "AufEinWort";

## The URL base path to the directory containing the wiki;

## defaults for all runtime URL paths are based off of this.

## For more information on customizing the URLs

## (like /w/index.php/Page_title to /wiki/Page_title) please see:

## https://www.mediawiki.org/wiki/Manual:Short_URL

$wgScriptPath = "";

## The protocol and server name to use in fully-qualified URLs

$wgServer = "https://wiki.aewi.de";

## The URL path to static resources (images, scripts, etc.)

$wgResourceBasePath = $wgScriptPath;

## The URL paths to the logo. Make sure you change this from the default,

## or else you'll overwrite your logo when you upgrade!

$wgLogos = [

'1x' => "$wgResourceBasePath/resources/assets/change-your-logo.svg",

'icon' => "$wgResourceBasePath/resources/assets/change-your-logo.svg",

];

$wgCookiePrefix = "aewi"; // Eindeutiger Präfix für alle Cookies

$wgCookieSecure = false;

$wgCookieSameSite = "Lax";

## UPO means: this is also a user preference option

$wgEnableEmail = true;

$wgEnableUserEmail = true; # UPO

$wgEmergencyContact = "klaus.feldmann@online.de";

$wgPasswordSender = "klaus.feldmann@online.de";

$wgEnotifUserTalk = false; # UPO

$wgEnotifWatchlist = false; # UPO

$wgEmailAuthentication = true;

## Database settings

$wgDBtype = "mysql";

$wgDBserver = "127.0.0.1"; # or localhost

$wgDBname = "mediawiki";

$wgDBuser = "root";

$wgDBpassword = "44%%55Aufeinwort";

# MySQL specific settings

$wgDBprefix = "";

$wgDBssl = true;

# MySQL table options to use during installation or update

$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";

Sophos:


Deine aktuelle LocalSettings.php-Konfiguration sieht größtenteils korrekt aus, aber es gibt einige Punkte, die überprüft oder optimiert werden sollten, um MediaWiki erfolgreich mit MariaDB unter https://wiki.aewi.de zu verbinden.

🔍 Wichtige Punkte zur Prüfung:

  1. Datenbankverbindung – MariaDB
    • 127.0.0.1 als wgDBserver ist korrekt, aber teste auch localhost.
    • Falls SSL nicht zwingend erforderlich ist, setze $wgDBssl = false;.
  1. Wiki-Pfad ($wgScriptPath)
    • Derzeit ist $wgScriptPath = ""; gesetzt, aber wenn MediaWiki in einem Unterverzeichnis wie /wiki liegt, sollte es "/wiki" sein.
  1. SSL-Optionen für die Datenbank ($wgDBssl)
    • Falls keine SSL-Verbindung zur Datenbank erforderlich ist, setze $wgDBssl = false;.

✅ Korrigierte LocalSettings.php

Hier ist die optimierte Konfiguration:

php

KopierenBearbeiten

# Schutz gegen direkten Webzugriff

if ( !defined( 'MEDIAWIKI' ) ) {

    exit;

}

## Grundkonfiguration

$wgSitename = "AufEinWort";

$wgMetaNamespace = "AufEinWort";

## Server- und URL-Konfiguration

$wgServer = "https://wiki.aewi.de";

$wgScriptPath = "/wiki"; # Falls MediaWiki unter /wiki installiert ist

$wgResourceBasePath = $wgScriptPath;

## Logo-Einstellungen

$wgLogos = [

    '1x' => "$wgResourceBasePath/resources/assets/change-your-logo.svg",

    'icon' => "$wgResourceBasePath/resources/assets/change-your-logo.svg",

];

## Cookie-Einstellungen

$wgCookiePrefix = "aewi";

$wgCookieSecure = true; # Falls Wiki nur über HTTPS läuft

$wgCookieSameSite = "Lax";

## E-Mail-Einstellungen

$wgEnableEmail = true;

$wgEnableUserEmail = true;

$wgEmergencyContact = "klaus.feldmann@online.de";

$wgPasswordSender = "klaus.feldmann@online.de";

$wgEnotifUserTalk = false;

$wgEnotifWatchlist = false;

$wgEmailAuthentication = true;

## Datenbank-Konfiguration

$wgDBtype = "mysql";

$wgDBserver = "127.0.0.1"; # Falls Verbindungsprobleme auftreten, versuche "localhost"

$wgDBname = "mediawiki";

$wgDBuser = "root";

$wgDBpassword = "44%%55Aufeinwort";

$wgDBprefix = "";

$wgDBssl = false; # Falls kein SSL für DB-Verbindung benötigt wird

## MySQL spezifische Einstellungen

$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4";

$wgDBmysql5 = false; # Falls MediaWiki speziell für MySQL 5.7 kompatibel sein muss, auf true setzen

## Debugging (optional bei Problemen)

#$wgShowExceptionDetails = true;

#$wgShowDBErrorBacktrace = true;

🛠️ Wichtige Änderungen:

  • $wgScriptPath = "/wiki"; → Falls MediaWiki unter https://wiki.aewi.de/wiki läuft.
  • $wgDBssl = false; → SSL nur aktivieren, wenn benötigt.
  • $wgCookieSecure = true; → Falls nur HTTPS genutzt wird.
  • $wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=utf8mb4"; → UTF8MB4 für bessere Unicode-Unterstützung.

📌 Weitere Überprüfungen

Falls MediaWiki immer noch nicht funktioniert:

  1. Prüfe, ob MariaDB richtig läuft bash KopierenBearbeiten brew services list | grep mariadb
  2. Falls mariadb@10.5 stopped angezeigt wird: bash KopierenBearbeiten brew services restart mariadb@10.5
  3. Testen der MySQL/MariaDB-Verbindung Versuche, dich direkt mit der Datenbank zu verbinden: bash KopierenBearbeiten mariadb -u root -p -h 127.0.0.1 mediawiki
  4. Falls das nicht geht, versuche: bash KopierenBearbeiten mariadb -u root -p -h localhost mediawiki
  5. Apache VirtualHost für MediaWiki prüfen Stelle sicher, dass httpd-vhosts.conf folgende Konfiguration enthält: apache KopierenBearbeiten <VirtualHost *:443>
  6.     ServerName wiki.aewi.de
  7.     DocumentRoot "/Library/WebServer/Documents/wiki"
  8.     <Directory "/Library/WebServer/Documents/wiki">
  9.         Options Indexes FollowSymLinks
  10.         AllowOverride All
  11.         Require all granted
  12.     </Directory>
  13.     SSLEngine on
  14.     SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"
  15.     SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"
  16.     ErrorLog "/opt/homebrew/var/log/httpd/wiki_error.log"
  17.     CustomLog "/opt/homebrew/var/log/httpd/wiki_access.log" common
  18. </VirtualHost>
  19. DNS und Subdomains überprüfen Stelle sicher, dass wiki.aewi.de in dnsmasq.conf korrekt eingetragen ist: ini KopierenBearbeiten address=/wiki.aewi.de/192.168.2.3
  20. Nach Änderungen: bash KopierenBearbeiten brew services restart dnsmasq
  21. brew services restart httpd

🛠️ Fazit

  • Wiki sollte unter https://wiki.aewi.de/wiki erreichbar sein.
  • Falls nicht, prüfe DNS, VirtualHost, MariaDB-Verbindung und Apache-Logs.

Falls noch Probleme bestehen, welche Fehlermeldung erscheint aktuell in MediaWiki? 🚀

Nikolaos:

Danke. Müßte "$wgDBtype = "mysql";" nicht dann "$wgDBtype = "mariadb";" sein?

Sophos:


Nein, $wgDBtype = "mysql"; ist richtig – auch für MariaDB.

📌 Warum bleibt es "mysql" und nicht "mariadb"?

  1. MariaDB ist ein MySQL-Derivat
    • MediaWiki verwendet die MySQL-API, die auch für MariaDB funktioniert.
    • In MediaWiki gibt es keine separate Einstellung für MariaDB, weil sich MariaDB gegenüber Anwendungen wie MySQL verhält.
  1. MediaWiki erkennt automatisch MariaDB
    • Falls du mariadb anstelle von mysql setzt, wird MediaWiki die Datenbank nicht finden.
    • Intern erkennt MediaWiki die Version und passt sich an.
  1. Bestätigung durch MediaWiki-Dokumentation
    • Die offizielle MediaWiki-Dokumentation verwendet ebenfalls mysql für MariaDB: 👉 MediaWiki Database Configuration

🛠️ Fazit

  • Lasse $wgDBtype = "mysql"; so stehen.
  • MediaWiki erkennt MariaDB automatisch und funktioniert einwandfrei. 🚀

Nikolaos:

Ich konnte mich nun in MediaWiki einloggen.

Ich erhalte folgende Fehlermeldung:

[e0f31c40bfdc837630cd90be] /index.php FatalError: If you use a relative URL for $wgArticlePath, it must start with a slash (<code>/</code>).<br><br>See <a href="https://www.mediawiki.org/wiki/Manual:$wgArticlePath">https://www.mediawiki.org/wiki/Manual:$wgArticlePath</a>.

Backtrace:

from /Library/WebServer/Documents/mediawiki/includes/Request/PathRouter.php(184)

#0 /Library/WebServer/Documents/mediawiki/includes/Request/WebRequest.php(200): MediaWiki\Request\PathRouter->validateRoute(string, string)

#1 /Library/WebServer/Documents/mediawiki/includes/Request/WebRequest.php(398): MediaWiki\Request\WebRequest->getPathInfo(string)

#2 /Library/WebServer/Documents/mediawiki/includes/Setup.php(466): MediaWiki\Request\WebRequest->interpolateTitle()

#3 /Library/WebServer/Documents/mediawiki/includes/WebStart.php(85): require_once(string)

#4 /Library/WebServer/Documents/mediawiki/index.php(50): require(string)

#5 {main}

Sophos:


Der Fehler hängt mit der Konfiguration von $wgArticlePath in deiner LocalSettings.php zusammen.

✅ Lösung: $wgArticlePath richtig setzen

Öffne LocalSettings.php und überprüfe oder füge folgende Zeile hinzu:

php

KopierenBearbeiten

$wgArticlePath = "/wiki/$1";

Stelle sicher, dass der Wert mit einem Slash (/) beginnt.

🔍 Warum tritt der Fehler auf?

  • LocalSettings.php erwartet, dass $wgArticlePath mit einem Slash (/) beginnt, wenn du eine relative URL verwendest.
  • Falls es leer ist oder einen falschen Wert hat (z. B. "wiki/$1" ohne /), führt das zu diesem Fehler.

🛠 Falls du Short URLs nutzen willst:

  1. Füge in LocalSettings.php hinzu: php KopierenBearbeiten $wgScriptPath = "/mediawiki";
  2. $wgArticlePath = "/wiki/$1";
  3. Apache Rewrite-Regeln in .htaccess oder httpd-vhosts.conf setzen Falls du kurze URLs (Short URLs) möchtest, sollte in httpd-vhosts.conf oder einer .htaccess-Datei Folgendes stehen: apache KopierenBearbeiten RewriteEngine On
  4. RewriteRule ^/?wiki(/.*)?$ /mediawiki/index.php [L]
  5. Hierbei wird /wiki/Artikelname auf /mediawiki/index.php?title=Artikelname umgeleitet.

📌 Fazit

  • Setze $wgArticlePath = "/wiki/$1"; in LocalSettings.php.
  • Falls du Short URLs möchtest, füge eine Rewrite-Regel hinzu.
  • Danach starte Apache neu: sh KopierenBearbeiten sudo brew services restart httpd

Das sollte dein Problem beheben. 🚀

Nikolaos:

Ich habe alle Änderungen durchgeführt  und habe nun den Fehler 404.

Welche URL muß ich nun nutzen? ist "https://wiki.aewi.de/Hauptseite" richtig?

3/3

Sophos:


Ja, die URL https://wiki.aewi.de/Hauptseite ist grundsätzlich korrekt, wenn du die Short-URL-Konfiguration richtig vorgenommen hast. Da du aber jetzt einen 404-Fehler bekommst, gibt es ein Problem mit der Rewrite-Regel oder der Apache-Konfiguration.

🔍 Fehleranalyse: Warum 404 nach Short-URL-Umstellung?

Die häufigsten Ursachen für diesen Fehler sind:

  1. Rewrite-Regeln in Apache greifen nicht oder sind deaktiviert. → Ist das mod_rewrite-Modul in Apache aktiv?
  2. Die DocumentRoot-Einstellung verweist nicht auf das richtige Verzeichnis. → Ist das DocumentRoot in httpd-vhosts.conf korrekt gesetzt?
  3. MediaWiki erwartet die URL noch im alten Format. → Hast du nach der Änderung den Apache-Server neugestartet?

🛠 Schritt-für-Schritt-Lösung:

1️⃣ Apache-Config überprüfen

Öffne deine httpd-vhosts.conf und stelle sicher, dass folgendes für wiki.aewi.de gesetzt ist:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName wiki.aewi.de

    DocumentRoot "/Library/WebServer/Documents/mediawiki"

    <Directory "/Library/WebServer/Documents/mediawiki">

        Options FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

    # SSL-Konfiguration (falls nötig)

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/wiki_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/wiki_access.log" common

</VirtualHost>

⚠️ Falls DocumentRoot falsch gesetzt ist (z. B. auf /Library/WebServer/Documents anstatt /Library/WebServer/Documents/mediawiki), dann funktioniert die Short-URL nicht.

2️⃣ Rewrite-Regel in .htaccess oder httpd-vhosts.conf aktivieren

Falls noch nicht geschehen, füge in .htaccess im mediawiki-Verzeichnis folgendes hinzu:

apache

KopierenBearbeiten

RewriteEngine On

RewriteRule ^/?wiki(/.*)?$ /mediawiki/index.php [L,QSA]

Falls du .htaccess nicht nutzt, dann stattdessen in httpd-vhosts.conf:

apache

KopierenBearbeiten

<Directory "/Library/WebServer/Documents/mediawiki">

    Options FollowSymLinks

    AllowOverride All

    Require all granted

    RewriteEngine On

    RewriteRule ^/?wiki(/.*)?$ /mediawiki/index.php [L,QSA]

</Directory>

3️⃣ MediaWiki LocalSettings.php anpassen

Stelle sicher, dass die folgenden Zeilen in LocalSettings.php korrekt sind:

php

KopierenBearbeiten

$wgScriptPath = "/mediawiki";

$wgArticlePath = "/wiki/$1";

$wgUsePathInfo = true; // Aktiviert die Nutzung von Short-URLs

Falls Short URLs nicht gewollt sind, kannst du $wgArticlePath wieder auf den Standard zurücksetzen:

php

KopierenBearbeiten

$wgArticlePath = "$wgScriptPath/index.php?title=$1";

4️⃣ Apache- und DNS-Dienste neustarten

Nach jeder Änderung Apache und dnsmasq neustarten:

sh

KopierenBearbeiten

sudo brew services restart httpd

sudo brew services restart dnsmasq

Falls du Änderungen an LocalSettings.php gemacht hast, lösche den MediaWiki-Cache:

sh

KopierenBearbeiten

rm -rf /Library/WebServer/Documents/mediawiki/cache/*

5️⃣ Testen, ob die URL funktioniert

  1. Teste die Standard-MediaWiki-URL:
    • https://de.wikipedia.org/w/index.php/Hauptseite Falls das geht, aber https://wiki.aewi.de/wiki/Hauptseite nicht, dann gibt es ein Problem mit der Rewrite-Regel.
  1. Falls du eine 404-Seite bekommst, überprüfe die Apache-Logs: sh KopierenBearbeiten tail -f /opt/homebrew/var/log/httpd/wiki_error.log

📌 Fazit

  • 404-Fehler kommt meist von falscher DocumentRoot-Einstellung oder fehlerhafter Rewrite-Regel.
  • Apache-Config (httpd-vhosts.conf) und MediaWiki-Config (LocalSettings.php) müssen zusammenpassen.
  • Apache nach jeder Änderung neustarten!
  • Teste, ob die Standard-URL (/mediawiki/index.php/Hauptseite) geht – wenn ja, dann liegt es nur an der Rewrite-Regel.

Teste das und sag mir, ob es jetzt funktioniert! 🚀

Nikolaos:

Ich kann das MediaWiki Setup durchführen, jedoch erhalte ich einen 404 Fehler, wenn ich nach dem Setup die Hauptseite aufrufe. Ich weiß nicht ob der Server .htaccess nutzt?

2/2

Sophos:


Da du das MediaWiki-Setup erfolgreich durchführen konntest, aber beim Aufruf der Hauptseite einen 404-Fehlerbekommst, liegt das Problem höchstwahrscheinlich an einer fehlenden oder nicht funktionierenden .htaccess-Dateioder an der Apache-Konfiguration (Rewrite-Module nicht aktiv).

🔍 Fehlersuche: Nutzt dein Server .htaccess?

Führe diesen Befehl aus, um zu überprüfen, ob .htaccess überhaupt existiert:

sh

KopierenBearbeiten

ls -la /Library/WebServer/Documents/mediawiki/

Falls die Datei .htaccess fehlt, erstelle sie mit folgendem Inhalt:

sh

KopierenBearbeiten

touch /Library/WebServer/Documents/mediawiki/.htaccess

🛠 Schritt-für-Schritt-Lösung

1️⃣ Stelle sicher, dass Apache .htaccess erlaubt

Öffne httpd-vhosts.conf und überprüfe, ob in deinem VirtualHost für wiki.aewi.de folgendes enthalten ist:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerName wiki.aewi.de

    DocumentRoot "/Library/WebServer/Documents/mediawiki"

    <Directory "/Library/WebServer/Documents/mediawiki">

        Options FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/wiki_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/wiki_access.log" common

</VirtualHost>

⚠️ Falls AllowOverride None gesetzt ist, ändere es zu AllowOverride All!

2️⃣ .htaccess für MediaWiki aktivieren

Falls die Datei .htaccess nicht existiert oder leer ist, erstelle sie mit folgendem Inhalt:

apache

KopierenBearbeiten

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^wiki/(.*)$ /mediawiki/index.php?title=$1 [L,QSA]

Speichere die Datei und setze die richtigen Berechtigungen:

sh

KopierenBearbeiten

sudo chmod 644 /Library/WebServer/Documents/mediawiki/.htaccess

sudo chown _www:_www /Library/WebServer/Documents/mediawiki/.htaccess

3️⃣ Apache-Modul mod_rewrite aktivieren

Falls mod_rewrite nicht aktiv ist, musst du es in Apache aktivieren:

sh

KopierenBearbeiten

sudo sed -i '' 's/#LoadModule rewrite_module/LoadModule rewrite_module/' /opt/homebrew/etc/httpd/httpd.conf

Danach Apache neustarten:

sh

KopierenBearbeiten

sudo brew services restart httpd

Überprüfe, ob mod_rewrite geladen ist:

sh

KopierenBearbeiten

apachectl -M | grep rewrite

Falls rewrite_module (shared) erscheint, ist es aktiv.

4️⃣ LocalSettings.php anpassen

In LocalSettings.php sollten die folgenden Einträge vorhanden sein:

php

KopierenBearbeiten

$wgScriptPath = "/mediawiki";

$wgArticlePath = "/wiki/$1";

$wgUsePathInfo = true;

Falls du nicht sicher bist, ob das Problem von MediaWiki kommt, teste die direkte URL:

https://de.wikipedia.org/w/index.php/Hauptseite

Falls das funktioniert, aber https://wiki.aewi.de/wiki/Hauptseite nicht, dann gibt es ein Problem mit .htaccess.

5️⃣ Apache-Logdateien prüfen

Falls es immer noch nicht geht, sieh dir die Logs an:

sh

KopierenBearbeiten

tail -f /opt/homebrew/var/log/httpd/wiki_error.log

Hier siehst du, warum Apache die Seite nicht findet.

📌 Fazit

  • Falls .htaccess nicht existiert, erstelle sie mit den Rewrite-Regeln.
  • AllowOverride All muss in httpd-vhosts.conf gesetzt sein.
  • Prüfe, ob mod_rewrite aktiviert ist.
  • Falls Short URLs (/wiki/Hauptseite) nicht funktionieren, teste zuerst die lange URL (/mediawiki/index.php/Hauptseite).

Teste das und sag mir, ob es funktioniert! 🚀

Nikolaos:

Zuvor war folgendes nicht enthalten:

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

Warum ist es jetzt enthalten?

Sophos:


Die beiden Zeilen:

apache

KopierenBearbeiten

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

haben eine wichtige Funktion beim URL-Rewriting für MediaWiki und verhindern, dass echte Dateien und Verzeichnisse von der Rewrite-Regel betroffen sind.

🔍 Warum sind diese Bedingungen wichtig?

Diese Bedingungen bedeuten:

  1. RewriteCond %{REQUEST_FILENAME} !-f → Falls die angeforderte URL zu einer existierenden Datei gehört, wird sie nicht umgeschrieben.
  2. RewriteCond %{REQUEST_FILENAME} !-d → Falls die angeforderte URL zu einem existierenden Verzeichnis gehört, wird sie nicht umgeschrieben.

Ohne diese Bedingungen könnte Apache auch Dateien und Verzeichnisse umleiten, die eigentlich direkt erreichbar sein sollten.

Das kann zu Problemen führen, wenn z. B. Bilder, CSS- oder JavaScript-Dateien von MediaWiki nicht mehr geladen werden.

🛠 Beispiel für das Problem ohne diese Zeilen

Ohne diese Zeilen:

  • Browser ruft /wiki/logo.png auf
  • Apache denkt, dass /wiki/logo.png eine Wiki-Seite ist und leitet zu /mediawiki/index.php?title=logo.pngum
  • Das Bild wird nicht geladen ❌

Mit diesen Zeilen:

  • Browser ruft /wiki/logo.png auf
  • Apache sieht, dass /wiki/logo.png eine existierende Datei ist
  • Apache lässt das Bild in Ruhe und es wird normal geladen ✅

📌 Fazit

Diese zwei Zeilen sind ein Best Practice für Rewrite-Regeln in Apache, um zu verhindern, dass echte Dateien und Verzeichnisse falsch umgeleitet werden.

👉 Falls dein MediaWiki ohne diese Zeilen einwandfrei funktioniert, kannst du es auch ohne testen. Aber normalerweise sind sie empfehlenswert. ✅

Möchtest du die Rewrite-Regeln noch weiter anpassen oder testen? 🚀

Nikolaos:

Ersteinmal den normalen Zugriff ermöglichen und dann auf kurze URL umstellen.

Was muß dafür eingestellt sein?

Sophos:


📌 MediaWiki – Normaler Zugriff ohne kurze URLs

Bevor du kurze URLs (Short URLs) einrichtest, sollten wir sicherstellen, dass dein MediaWiki normal erreichbar ist. Dafür müssen folgende Punkte stimmen:

1️⃣ Standard-URL für den Zugriff auf MediaWiki

Aktuell sollte dein Wiki unter folgender URL erreichbar sein:

👉 https://de.wikipedia.org/w/index.php/Hauptseite

Falls das nicht funktioniert, prüfen wir, ob LocalSettings.php und httpd-vhosts.conf korrekt konfiguriert sind.

2️⃣ LocalSettings.php anpassen

In LocalSettings.php sollten die Einstellungen für die Standard-URL so aussehen:

php

KopierenBearbeiten

$wgScriptPath = "/mediawiki";  // Standard-Pfad für MediaWiki

$wgScriptExtension = ".php";   // Standard-Erweiterung für MediaWiki-Skripte

$wgServer = "https://wiki.aewi.de";  // Domain des Wikis

$wgArticlePath = "$wgScriptPath/index.php/$1";  // Standard-Artikel-Pfad

$wgUsePathInfo = true;  // Nutzung von "index.php/Artikelname"

Falls du MediaWiki in /Library/WebServer/Documents/mediawiki installiert hast, sollte $wgScriptPath auf diesen Ordner verweisen.

3️⃣ Apache VirtualHost für wiki.aewi.de

Dein httpd-vhosts.conf sollte folgende Konfiguration enthalten:

apache

KopierenBearbeiten

<VirtualHost *:443>

    ServerAdmin webmaster@aewi.de

    ServerName wiki.aewi.de

    DocumentRoot "/Library/WebServer/Documents/mediawiki"

    <Directory "/Library/WebServer/Documents/mediawiki">

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

    SSLEngine on

    SSLCertificateFile "/etc/letsencrypt/live/aewi.de/fullchain.pem"

    SSLCertificateKeyFile "/etc/letsencrypt/live/aewi.de/privkey.pem"

    ErrorLog "/opt/homebrew/var/log/httpd/wiki_error.log"

    CustomLog "/opt/homebrew/var/log/httpd/wiki_access.log" common

</VirtualHost>

Falls dein MediaWiki in einem anderen Ordner liegt, ändere den Pfad von DocumentRoot und <Directory>entsprechend!

👉 DocumentRoot muss auf den MediaWiki-Ordner zeigen, nicht auf /Library/WebServer/Documents.

4️⃣ Apache HTTP-Server prüfen und neu starten

Apache-Konfiguration testen:

sh

KopierenBearbeiten

sudo apachectl configtest

Erwartete Antwort:

✅ Syntax OK

Apache neu starten:

sh

KopierenBearbeiten

sudo brew services restart httpd

5️⃣ MediaWiki-Datenbankverbindung prüfen

Falls nach diesen Änderungen noch Fehler 404 oder 500 auftreten, prüfe, ob MariaDB die Wiki-Datenbank erkennt.

sh

KopierenBearbeiten

mariadb -u root -p -e "SHOW DATABASES;"

Sollte mediawiki nicht aufgelistet sein, wurde die Datenbank nicht korrekt importiert.

📌 Ergebnis

✔ Nach diesen Änderungen sollte dein Wiki über

👉 https://de.wikipedia.org/w/index.php/Hauptseite

erreichbar sein.

📌 Sobald das funktioniert, können wir kurze URLs (Short URLs) einrichten. 🚀

Teste es und gib mir Bescheid, ob es funktioniert! 🔍✅

Nikolaos:

"$wgScriptExtension = ".php";" hatt ich noch nie eingestellt. Warum dies nun?

Sophos:


📌 $wgScriptExtension = ".php"; – Brauchst du das wirklich?

Nein, wenn du es bisher nicht verwendet hast, brauchst du es nicht zwingend. Es wird normalerweise nur verwendet, wenn du explizit sicherstellen willst, dass MediaWiki die .php-Endung für Skripte beibehält.

Wann wird $wgScriptExtension gebraucht?

✅ Falls deine URL so aussehen soll:

👉 https://de.wikipedia.org/w/index.php/Hauptseite

Dann brauchst du die Zeile nicht.

❌ Falls deine URL aber stattdessen so aussehen soll:

👉 https://de.wikipedia.org/w/index/Hauptseite.php

Dann wäre $wgScriptExtension = ".php"; nötig.

🔹 Fazit:

Da du bisher ohne diese Einstellung gearbeitet hast und du URLs mit /index.php/Hauptseite nutzt, kannst du es einfach weglassen. 🚀

Lass es uns so einfach wie möglich halten! 😃

Gibt es noch andere Probleme mit der Erreichbarkeit von MediaWiki? 🔍

Nikolaos:

Ich habe es auf ohne kurze URL umgestellt und erhalte folgenden Fehler:

[3f2b0de25b0da68b81d22475] /index.php FatalError: If you use a relative URL for $wgArticlePath, it must start with a slash (<code>/</code>).<br><br>See <a href="https://www.mediawiki.org/wiki/Manual:$wgArticlePath">https://www.mediawiki.org/wiki/Manual:$wgArticlePath</a>.

Backtrace:

from /Library/WebServer/Documents/mediawiki/includes/Request/PathRouter.php(184)

#0 /Library/WebServer/Documents/mediawiki/includes/Request/WebRequest.php(200): MediaWiki\Request\PathRouter->validateRoute(string, string)

#1 /Library/WebServer/Documents/mediawiki/includes/Request/WebRequest.php(398): MediaWiki\Request\WebRequest->getPathInfo(string)

#2 /Library/WebServer/Documents/mediawiki/includes/Setup.php(466): MediaWiki\Request\WebRequest->interpolateTitle()

#3 /Library/WebServer/Documents/mediawiki/includes/WebStart.php(85): require_once(string)

#4 /Library/WebServer/Documents/mediawiki/index.php(50): require(string)

#5 {main}

Was muß ich ändern?

Sophos:


Der Fehler deutet darauf hin, dass $wgArticlePath in deiner LocalSettings.php entweder nicht korrekt gesetzt istoder eine falsche Syntax hat.

🛠 Lösung: Stelle $wgArticlePath richtig ein

  1. Öffne deine LocalSettings.php
  2. Finde oder füge folgende Zeilen hinzu:

php

KopierenBearbeiten

$wgArticlePath = "/index.php/$1";

  1. Prüfe $wgUsePathInfo Falls es in deiner LocalSettings.php fehlt, füge es hinzu:

php

KopierenBearbeiten

$wgUsePathInfo = true;

  1. Speichern und testen: Rufe die Hauptseite mit https://wiki.aewi.de/index.php/Hauptseite auf.

Erklärung: Warum dieser Fehler?

  • Wenn $wgArticlePath gesetzt ist, erwartet MediaWiki eine relative URL, die mit / beginnt.
  • Falls $wgArticlePath leer ist oder nicht gesetzt wurde, versucht MediaWiki dennoch, es zu verwenden → Fehler.

🔎 Falls es danach nicht funktioniert:

📌 Debug-Check: Gib diesen Befehl im Terminal ein, um zu prüfen, ob die Datei noch vorhanden ist:

bash

KopierenBearbeiten

cat /Library/WebServer/Documents/mediawiki/LocalSettings.php | grep wgArticlePath

Falls dort nichts erscheint, wurde die Zeile nicht richtig gespeichert.

Probier es aus und sag mir, ob es nun funktioniert! 🚀😊

Nikolaos:

ich habe es geänder. Nun habe ich keine php Seite sondern es sieht aus wie html.

was muß ich ändern?

php muß integriert sein wenn phpmyadmin richtig anzeigt oder?

2/2

Sophos:


Ja, wenn deine MediaWiki-Seite wie reines HTML aussieht (ohne Styling oder ohne, dass PHP richtig verarbeitet wird), dann gibt es wahrscheinlich ein Problem mit der PHP-Integration in Apache. Da phpMyAdmin korrekt funktioniert, bedeutet das aber, dass PHP grundsätzlich läuft.

🛠 Schritte zur Fehlerbehebung:

1️⃣ Prüfe, ob Apache PHP richtig verarbeitet

Gib im Terminal folgenden Befehl ein:

bash

KopierenBearbeiten

php -v

Falls PHP funktioniert, sollte eine Ausgabe erscheinen wie:

PHP 8.2.x (cli) (built:...)

Falls du eine Fehlermeldung bekommst, ist PHP nicht korrekt installiert oder nicht aktiviert.

2️⃣ Prüfe, ob Apache PHP als Modul geladen hat

Führe folgenden Befehl aus:

bash

KopierenBearbeiten

sudo apachectl -M | grep php

Falls PHP korrekt geladen ist, sollte eine Zeile erscheinen wie:

bash

KopierenBearbeiten

php_module (shared)

Falls keine Ausgabe erscheint, bedeutet das, dass Apache PHP nicht verarbeitet.

➡ Lösung:

Öffne die Datei /opt/homebrew/etc/httpd/httpd.conf und prüfe, ob diese Zeile vorhanden und nicht auskommentiert (#) ist:

apache

KopierenBearbeiten

LoadModule php_module /opt/homebrew/opt/php/lib/httpd/modules/libphp.so

Falls sie fehlt oder auskommentiert ist, füge sie hinzu oder entferne das #, dann speichere und starte Apache neu:

bash

KopierenBearbeiten

sudo brew services restart httpd

3️⃣ Prüfe, ob index.php erlaubt ist

Öffne /opt/homebrew/etc/httpd/httpd.conf und prüfe diese Zeile:

apache

KopierenBearbeiten

DirectoryIndex index.html index.php

Falls index.php fehlt, füge es hinzu, dann speichere und Apache neu starten:

bash

KopierenBearbeiten

sudo brew services restart httpd

4️⃣ Teste, ob PHP überhaupt ausgeführt wird

  1. Erstelle eine Datei phpinfo.php im MediaWiki-Verzeichnis: bash KopierenBearbeiten echo "<?php phpinfo(); ?>" | sudo tee /Library/WebServer/Documents/mediawiki/phpinfo.php
  2. Rufe in deinem Browser auf: https://wiki.aewi.de/phpinfo.php

Falls du die PHP-Infoseite siehst, funktioniert PHP grundsätzlich. Falls nicht, liegt das Problem bei Apache.

5️⃣ Falls MediaWiki nur als HTML lädt

Falls MediaWiki kein CSS oder JavaScript lädt, könnte es sein, dass der load.php-Pfad falsch ist.

Setze in deiner LocalSettings.php:

php

KopierenBearbeiten

$wgScriptPath = "/mediawiki";

$wgResourceBasePath = "$wgScriptPath";

Dann Apache neu starten:

bash

KopierenBearbeiten

sudo brew services restart httpd

Probier die Schritte aus und sag mir, welche Ergebnisse du bekommst. 🚀🔥

Nikolaos:

Ich bin jetzt in MediaWiki.

Der Fehler lag an httpd-vhost.conf.

1. "<Directory "/Library/WebServer/Documents/mediawiki">" muß wenn "$wgScriptPath = "/mediawiki";" ist, dann auf "<Directory "/Library/WebServer/Documents">" stehen.

2. "DocumentRoot "/Library/WebServer/Documents/mediawiki" muß wenn "$wgScriptPath = "/mediawiki";" ist, dann auf "DocumentRoot "/Library/WebServer/Documents" stehen.

Trotz unserem Import der Daten ist die Datenbank leer.

Gib mir bitte den mariadb import Befehl für den import der mediawiki Datenbank, die bestehende Daten überschreibt.

Sophos:


Um die MediaWiki-Datenbank aus einer SQL-Datei zu importieren und bestehende Daten zu überschreiben, kannst du folgenden MariaDB-Befehl verwenden:

📌 Befehl für den Import mit Überschreiben der bestehenden Daten

bash

KopierenBearbeiten

mariadb -u root -p mediawiki < /Users/aewi/mediawiki.sql

🛠 Erklärungen:

  • mariadb -u root -p → Loggt dich als root in MariaDB ein.
  • mediawiki → Ziel-Datenbank, in die importiert wird.
  • </Users/aewi/mediawiki.sql → Gibt die Quelle der zu importierenden Daten an.
  • < → Leitet den Inhalt der SQL-Datei als Eingabe für MariaDB weiter.

⚠ Wichtige Hinweise:

  1. Falls die Datenbank mediawiki noch nicht existiert, erstelle sie vorher mit: bash KopierenBearbeiten mariadb -u root -p -e "CREATE DATABASE IF NOT EXISTS mediawiki;"
  2. Falls die bestehende Datenbank bereits Tabellen enthält und überschrieben werden soll, kannst du vorher alle Tabellen DROPPEN (LÖSCHEN) mit: bash KopierenBearbeiten mariadb -u root -p mediawiki -e "DROP DATABASE mediawiki; CREATE DATABASE mediawiki;"
  3. Falls der Import scheitert, kann es an fehlenden Berechtigungen liegen. Stelle sicher, dass du als root-Benutzer arbeitest oder mit einem Benutzer, der Zugriff auf die mediawiki-Datenbank hat.
  4. Prüfe nach dem Import, ob die Tabellen gefüllt sind: bash KopierenBearbeiten mariadb -u root -p -e "USE mediawiki; SHOW TABLES;"

🚀 So überprüfst du, ob der Import erfolgreich war:

  1. Einloggen in MariaDB bash KopierenBearbeiten mariadb -u root -p
  2. Datenbank auswählen sql KopierenBearbeiten USE mediawiki;
  3. Anzeigen aller Tabellen sql KopierenBearbeiten SHOW TABLES;
  4. Überprüfen, ob Seiten aus MediaWiki vorhanden sind sql KopierenBearbeiten SELECT * FROM page LIMIT 10;

🛠 Falls du nach dem Import Fehler bekommst:

  • "ERROR 1062 (23000): Duplicate entry" → Bedeutet, dass die Datenbank bereits Inhalte hat. → Lösung: DROP DATABASE vorher ausführen.
  • "ERROR 1046 (3D000): No database selected" → Lösung: Führe USE mediawiki; aus, bevor du SHOW TABLES; verwendest.

📌 Alternative: Datenbank-Import mit mysql statt mariadb

Falls mariadb nicht funktioniert, kannst du auch mysql nutzen:

bash

KopierenBearbeiten

mysql -u root -p mediawiki < /Users/aewi/mediawiki.sql

Da MariaDB ein Drop-in-Replacement für MySQL ist, sollte das ebenfalls klappen.

🔹 Teste den Import und prüfe danach, ob die Seiten wieder da sind! 🚀🔥

Nikolaos:

1. Ich habe die Datenbank importiert und "php maintenance/run.php update" ausgeführt.

2. php maintenance/run.php update

MediaWiki 1.43.0 Updater

Your composer.lock file is up to date with current dependencies!

Going to run database updates for mediawiki

Depending on the size of your database this may take a while!

Abort with control-c in the next five seconds (skip this countdown with --quick) ...0

Can not upgrade from versions older than 1.35, please upgrade to that version or later first.

Der importierte dump.sql stammt von mysql 5.7 und MediaWiki 1.43.

3. Ich erhalte in MEdiaWIki folgende Fehlermeldung:

Original exception: [b3f72d616d6e1054a3ce009e] /mediawiki/index.php? Wikimedia\Rdbms\DBQueryError: A database query error has occurred. Did you forget to run your application's database schema updater after upgrading or after adding a new extension?

Please see https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Upgrading and https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:How_to_debug for more information.

Error 1146: Table 'mediawiki.user' doesn't exist

Function: MediaWiki\User\User::loadFromDatabase

Query: SELECT user_id,user_name,user_real_name,user_email,user_touched,user_token,user_email_authenticated,user_email_token,user_email_token_expires,user_registration,user_editcount,user_actor.actor_id FROM `user` JOIN `actor` `user_actor` ON ((user_actor.actor_user = user_id)) WHERE user_id = 1 LIMIT 1

User Tabelle ist offenbar nicht zugänglich oder hat keinen Inhalt?

Ich kann auch nicht auf die mediaWiki Settings Seite gelangen. das Datenbank Schema muß an sich ein Update durchlaufen, damit die neue Datenbank übereinstimmend ist.

Also es ist ein mysql dump von Wikimedia 1.43.x und mySQL 5.7.x, also die richtige Version, die kein Update von 1.35 auf 1.43 braucht!

Ich hatte dieses dump bereits zuvor erfolgreich in meinem alten Wikimedia Server importiert. Dies ging also!

Was jetzt anders ist, ist dass wir eine mysql Datenbank in MariaDB importieren!

Ich habe mit phpmyadmin nachgeschaut und die user Tabelle ist da und enthält angelegte user!

Das Schema von MariaDB könnte anders sein und muß ein update erhalten.

6/6

Sophos:


Das Problem liegt wahrscheinlich an Unterschieden im Datenbankschema zwischen MySQL 5.7 und MariaDB 10.5sowie unvollständigen Verweisen nach dem Import.

Da die User-Tabelle vorhanden ist, aber MediaWiki sie nicht erkennt, könnte es an fehlenden Indexen, Primärschlüsseln oder utf8mb4-Einstellungen liegen.

🔹 1. Prüfen, ob die Tabelle user existiert und korrekt ist

Führe in MariaDB folgende Abfragen aus:

sql

KopierenBearbeiten

USE mediawiki;

SHOW TABLES LIKE 'user';

DESCRIBE user;

SELECT * FROM user LIMIT 5;

  • Falls SHOW TABLES LIKE 'user'; keine Ergebnisse liefert, wurde die Tabelle nicht korrekt importiert.
  • Falls DESCRIBE user; fehlschlägt, gibt es ein Problem mit den Spalten.
  • Falls SELECT * FROM user; keine Daten liefert, sind die User nicht vorhanden.

🔹 2. Indexe & Primärschlüssel reparieren

MariaDB kann mit manchen Indexen aus MySQL 5.7 Probleme haben. Probiere daher:

sql

KopierenBearbeiten

USE mediawiki;

ALTER TABLE user ENGINE=InnoDB;

REPAIR TABLE user;

ANALYZE TABLE user;

OPTIMIZE TABLE user;

Falls InnoDB nicht funktioniert, probiere ENGINE=Aria;.

🔹 3. Fehlende Tabellen nach dem Import erstellen

Falls maintenance/run.php update nicht läuft, kann es helfen, manuell fehlende Tabellen zu erzeugen:

sql

KopierenBearbeiten

USE mediawiki;

CREATE TABLE IF NOT EXISTS user (

  user_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

  user_name VARCHAR(255) NOT NULL,

  user_real_name VARCHAR(255) DEFAULT NULL,

  user_email VARCHAR(255) DEFAULT NULL,

  user_password VARCHAR(255) DEFAULT NULL,

  user_token VARCHAR(255) DEFAULT NULL,

  user_touched VARCHAR(14) NOT NULL DEFAULT '',

  user_registration VARCHAR(14) DEFAULT NULL,

  user_editcount INT(11) DEFAULT NULL,

  user_email_authenticated DATETIME DEFAULT NULL,

  user_email_token VARCHAR(255) DEFAULT NULL,

  user_email_token_expires DATETIME DEFAULT NULL

);

🔹 4. actor-Tabelle prüfen & reparieren

Die Fehlermeldung enthält auch actor, also prüfen wir sie:

sql

KopierenBearbeiten

USE mediawiki;

SHOW TABLES LIKE 'actor';

DESCRIBE actor;

SELECT * FROM actor LIMIT 5;

Falls sie fehlt:

sql

KopierenBearbeiten

CREATE TABLE IF NOT EXISTS actor (

  actor_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

  actor_user INT(10) UNSIGNED DEFAULT NULL,

  actor_name VARCHAR(255) NOT NULL

);

🔹 5. utf8mb4-Probleme beheben

MySQL 5.7 nutzt utf8mb4-Encoding, aber MariaDB kann manchmal utf8 nach dem Import setzen:

sql

KopierenBearbeiten

ALTER DATABASE mediawiki CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

ALTER TABLE actor CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

🔹 6. maintenance/run.php erneut ausführen

Falls die Tabellen jetzt korrekt sind:

bash

KopierenBearbeiten

php maintenance/run.php update --quick

Falls es wieder an der Version 1.35 liegt, könntest du es mit --skip-external-dependencies versuchen:

bash

KopierenBearbeiten

php maintenance/run.php update --skip-external-dependencies

🚀 Teste jetzt, ob MediaWiki funktioniert!

Falls noch Fehler bestehen, lass mich wissen, welche Tabellen in phpMyAdmin fehlen oder leer sind.

Nikolaos:

Ich habe dir gesagt, daß die user Tabellen alle da sind und du tust so, als würde ich dir dies nicht gesagt haben und gibst mir lauter unnötige Anweisungen!

Sophos:


Da die User-Tabelle vorhanden ist, aber MediaWiki sie nicht erkennt, müssen wir uns auf mögliche Inkompatibilitäten zwischen MySQL 5.7 und MariaDB 10.5 konzentrieren.

Da maintenance/run.php update wegen der Version 1.35 fehlschlägt, versuchen wir eine alternative Aktualisierung:

🔹 1. MediaWiki-Update mit --skip-external-dependencies erzwingen

Falls einige Extensions oder Module fehlen, kann ein erzwungenes Update helfen:

bash

KopierenBearbeiten

php maintenance/run.php update --skip-external-dependencies

Falls das nicht funktioniert, probiere:

bash

KopierenBearbeiten

php maintenance/run.php update --quick

🔹 2. MediaWiki erkennt die Tabelle nicht – mögliche Ursachen

Da du sagst, dass die user-Tabelle existiert, aber MediaWiki sie nicht findet, prüfen wir:

A) Ist MediaWiki mit der richtigen Datenbank verbunden?

Teste direkt in PHP mit:

php

KopierenBearbeiten

<?php

$mysqli = new mysqli("127.0.0.1", "root", "44%%55Aufeinwort", "mediawiki");

if ($mysqli->connect_error) {

    die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);

}

echo "Verbindung erfolgreich!";

?>

Speichere es als test_db.php und rufe https://wiki.aewi.de/test_db.php auf.

Falls kein Fehler kommt, ist die Verbindung richtig. Falls doch, müssen wir die LocalSettings.php korrigieren.

B) Hat MediaWiki die user-Tabelle aus der richtigen Datenbank?

Führe in mariadb aus:

sql

KopierenBearbeiten

USE mediawiki;

SHOW TABLES;

SELECT COUNT(*) FROM user;

  • Falls SHOW TABLES; die user-Tabelle nicht anzeigt, ist der Import schiefgelaufen.
  • Falls SELECT COUNT(*) FROM user; 0 zurückgibt, fehlen die Benutzer.
  • Falls die Tabelle da ist und Benutzer hat, aber MediaWiki sie nicht findet, gibt es ein Problem mit der Datenbankverbindung oder Tabellenpräfixen.

C) Wurde wgDBprefix in LocalSettings.php gesetzt?

Falls die user-Tabelle eigentlich mw_user oder wiki_user heißt, muss LocalSettings.php angepasst werden:

Suche in LocalSettings.php:

php

KopierenBearbeiten

$wgDBprefix = "";

Falls du z. B. mw_ als Präfix hast, setze:

php

KopierenBearbeiten

$wgDBprefix = "mw_";

Falls kein Präfix existiert, lösche diese Zeile!

🔹 3. Teste nun den Login

Falls du den MediaWiki-Login testen willst, kannst du auch direkt einen neuen Admin anlegen:

bash

KopierenBearbeiten

php maintenance/createAndPromote.php --force --sysop --bureaucrat "AdminUser" "NeuesPasswort"

Das legt einen neuen Benutzer mit Admin-Rechten an.

🔹 4. Prüfe die Fehlerlogs von MediaWiki

Falls immer noch Fehler auftreten, schalte das Debugging in LocalSettings.php an:

php

KopierenBearbeiten

$wgShowExceptionDetails = true;

$wgShowSQLErrors = true;

$wgDebugDumpSql = true;

$wgLogQueries = true;

$wgDebugLogFile = "/var/log/mediawiki_debug.log";

Starte Apache neu und schau, was in /var/log/mediawiki_debug.log steht.

Fazit

Da die user-Tabelle vorhanden ist, aber nicht erkannt wird:

✅ Stelle sicher, dass MediaWiki mit der richtigen Datenbank verbunden ist

✅ Prüfe, ob wgDBprefix in LocalSettings.php richtig gesetzt ist

✅ Starte das Update-Skript mit --skip-external-dependencies

✅ Falls nichts hilft, lege einen neuen Benutzer mit createAndPromote.php an

Falls noch Probleme bestehen, sag mir genau, welche dieser Schritte fehlschlägt. 🚀

Nikolaos:

Ich erinnerte mich, daß ein Präfix auf "$wgDBprefix = "wiki_";" gesetzt war und ich habe das in LocalSettings.php geändert und nun kann ich auf alles zugreifen.

Das MediaWiki ist nun von meinem M1 und M2 im LAN erreichbar.

Ich bin über WLAN mit meinem iPhone im gleichen Netzwerk und kann die Hauptseite des MediaWiki nicht erreichen.

Muß dazu noch etwas in der Fritz!Box umgestellt werden, damit WLA auch den DNS Server vom M1 nutzt, oder muß in dnsmasq noch WLAN besonders behandelt werden?

Sophos:


Ja, damit dein iPhone über WLAN im gleichen Netzwerk auf das MediaWiki zugreifen kann, muss das DNS-Setupin der Fritz!Box angepasst werden, damit dnsmasq auf dem M1 als bevorzugter DNS-Server genutzt wird.

🔹 1. Prüfe, ob dein iPhone den richtigen DNS-Server nutzt

Bevor du etwas änderst, teste zuerst auf dem iPhone:

  1. Öffne die WLAN-Einstellungen
  2. Tippe auf das verbundene WLAN-Netzwerk
  3. Scrolle runter und prüfe den Eintrag "DNS-Server"

Falls dort die IP-Adresse der Fritz!Box (meist 192.168.178.1) steht, dann leitet dein iPhone DNS-Anfragen an die Fritz!Box und nicht an den M1.

🔹 2. M1 als DNS-Server in der Fritz!Box eintragen

Falls dein iPhone die Fritz!Box als DNS-Server nutzt, dann leite alle DNS-Anfragen von der Fritz!Box an dnsmasq auf dem M1 weiter.

Änderung in der Fritz!Box:

  1. Öffne die Fritz!Box: 👉 http://fritz.box
  2. Gehe zu: ➝ Internet → Zugangsdaten → DNS-Server
  3. Setze dort den primären DNS auf die IP des M1
    • Falls dein M1 z. B. die IP 192.168.2.3 hat, dann setze: arduino KopierenBearbeiten Primärer DNS-Server: 192.168.2.3
    • Sekundärer DNS-Server: 8.8.8.8 (Google DNS oder 1.1.1.1 von Cloudflare)
  1. Übernehme die Einstellungen & starte die Fritz!Box neu

❗ Wichtig: Falls du die DNS-Einstellungen manuell in der Fritz!Box änderst, betrifft das alle Geräte im Netzwerk. Falls etwas nicht funktioniert, kannst du es jederzeit rückgängig machen.

🔹 3. Alternativ: DNS manuell auf dem iPhone setzen

Falls du die Fritz!Box nicht ändern willst, kannst du auf dem iPhone den DNS manuell setzen:

  1. WLAN-Einstellungen öffnen
  2. Auf das verbundene Netzwerk tippen
  3. Auf "DNS konfigurieren" tippen
  4. Von "Automatisch" auf "Manuell" umstellen
  5. DNS-Server des M1 eintragen cpp KopierenBearbeiten 192.168.2.3
  6. 8.8.8.8 (optional als zweiter DNS)
  7. Speichern & testen

Jetzt sollte dein iPhone direkt dnsmasq vom M1 nutzen.

🔹 4. Falls es immer noch nicht geht – Prüfe dnsmasq

Falls du dnsmasq auf dem M1 nutzt, stelle sicher, dass es auf alle Interfaces lauscht, damit auch WLAN-Geräte Anfragen stellen können.

🔹 Checke die dnsmasq.conf:

Öffne sie mit:

bash

KopierenBearbeiten

sudo nano /opt/homebrew/etc/dnsmasq.conf

Stelle sicher, dass folgende Zeile enthalten ist:

ini

KopierenBearbeiten

listen-address=127.0.0.1,192.168.2.3

Falls du IPv6 im Netzwerk nutzt, kannst du noch hinzufügen:

ini

KopierenBearbeiten

listen-address=::1,192.168.2.3

Dann dnsmasq neu starten:

bash

KopierenBearbeiten

sudo brew services restart dnsmasq

🔹 5. Teste den Zugriff vom iPhone

Jetzt kannst du testen, ob dein iPhone die richtige DNS-Auflösung hat.

  1. Öffne die Kurzbefehle-App
  2. Erstelle eine neue Shell-Kurzbefehlsaktion
  3. Füge den folgenden Befehl ein: bash KopierenBearbeiten nslookup wiki.aewi.de
  4. Führe den Kurzbefehl aus.

Falls 192.168.2.3 zurückgegeben wird, funktioniert der DNS-Server.

Falls es immer noch nicht geht, versuche dein iPhone kurz im Flugmodus zu setzen und dann wieder ins WLAN zu wechseln.

🔹 Fazit

✅ Falls dein iPhone die Fritz!Box als DNS nutzt, leite DNS-Anfragen an den M1 weiter

✅ Falls du nur das iPhone ändern willst, setze manuell 192.168.2.3 als DNS

✅ Falls es immer noch nicht geht, prüfe, ob dnsmasq richtig konfiguriert ist

Teste das und sag mir, ob es klappt! 🚀

Nikolaos:

Ich mußte mnur die Webseitendaten von aewi.de auf meinem iPhone in Safari löschen.

Jetzt geht auch der Zugriff auf MediaWiki von Geräten im WLAN..

VPN über iPhone war offenbar auch davon betroffen. Ich kann nun auch über LTE G5 auf MediaWiki mittels wireguard VPN

Sophos:


Perfekt! 🎉 Dass der Safari-Cache das Problem war, ist ein klassisches Beispiel für lokale DNS-/Caching-Probleme, die sich auf den Zugriff auswirken können.

Nun funktioniert:

✅ MediaWiki über WLAN

✅ MediaWiki über WireGuard VPN (LTE/G5)

✅ phpMyAdmin über die korrekte Subdomain

✅ Homebrew-Dienste korrekt gestartet

✅ MariaDB mit den richtigen Konfigurationen

Das System ist jetzt also genau so, wie du es brauchst. 🚀

Falls später noch Probleme auftreten (z. B. Zugriffe nicht funktionieren), lohnt es sich immer:

  • Browser-Cache zu leeren
  • nslookup oder dig zu testen
  • ping oder traceroute auf die Subdomains auszuführen

Super Arbeit – dein Setup ist jetzt optimal! 🎯💪

Nikolaos:

Noch nicht ganz. Wir installieren gleich in einem weiteren Chat ElasticSearch und weitere Erweiterungen in MediaWiki.

Weiß du, was ich in LocalSettings.php eingeben muß, damit ich E-Mails aus MediaWiki heraus versenden kann. Gibt mir bitte die Einstellungen.

Sophos:


Ja, um E-Mails aus MediaWiki zu versenden, musst du in der LocalSettings.php einige Parameter setzen. Hier sind die grundlegenden Einstellungen für den E-Mail-Versand:

1️⃣ Allgemeine Einstellungen für E-Mail-Versand

Füge diese Zeilen in deine LocalSettings.php ein:

php

KopierenBearbeiten

$wgEnableEmail = true;

$wgEnableUserEmail = true;  # Ermöglicht das Versenden von E-Mails zwischen Benutzern

$wgEmergencyContact = "admin@aewi.de";  # E-Mail-Adresse für Notfallkontakte

$wgPasswordSender = "no-reply@aewi.de"; # Absenderadresse für automatisch gesendete E-Mails

$wgEnotifUserTalk = true;  # E-Mail-Benachrichtigung für Benutzer-Diskussionsseiten

$wgEnotifWatchlist = true; # E-Mail-Benachrichtigung für beobachtete Seiten

$wgEmailAuthentication = true; # Benutzer müssen ihre E-Mail bestätigen

# Falls du ein SMTP-Relay nutzen möchtest:

$wgSMTP = [

    'host'     => "smtp.aewi.de",  # Dein SMTP-Server

    'IDHost'   => "aewi.de",       # Deine Domain

    'port'     => 587,             # SMTP-Port (465 für SSL, 587 für TLS)

    'auth'     => true,            # Authentifizierung aktivieren

    'username' => "noreply@aewi.de", # Dein SMTP-Benutzername

    'password' => "DEIN_SICHERES_PASSWORT", # Dein SMTP-Passwort

    'secure'   => "tls"             # "tls" oder "ssl", je nach Server

];

2️⃣ SMTP-Alternative: System-Mailer verwenden (Sendmail, Postfix, Exim)

Falls dein Server einen Mailserver wie Postfix oder Exim4 nutzt, kannst du MediaWiki stattdessen den lokalen Mail-Transport nutzen lassen:

php

KopierenBearbeiten

unset( $wgSMTP ); # Deaktiviert SMTP und nutzt das System

💡 Hinweis: Falls dein Mailserver nicht richtig konfiguriert ist, kann dies dazu führen, dass E-Mails als Spam eingestuft oder blockiert werden.

3️⃣ Testen des E-Mail-Versands

Du kannst prüfen, ob MediaWiki E-Mails versenden kann, indem du als angemeldeter Benutzer:

  1. Auf „E-Mail an diesen Benutzer senden“ gehst (Benutzer-Profil)
  2. Ein Passwort zurücksetzt
  3. php maintenance/showJobs.php ausführst – falls E-Mails in der Warteschlange hängen.

Falls es nicht funktioniert:

  • Prüfe die Mailserver-Logs (/var/log/mail.log oder /var/log/exim4/mainlog)
  • Teste mail() in PHP: php KopierenBearbeiten <?php
  • mail('test@aewi.de', 'Test-Mail', 'Dies ist ein Test!');
  • ?>

Damit sollten E-Mails aus MediaWiki heraus funktionieren! 🚀

Nikolaos:

Derzeit nutze ich 1und1, meine email ist Klaus.feldmann@online.de

Wenn ich doch jetzt eine eigene Domain habe, könnte ich ja meine eigenen E-Mails auf aewi.de verwenden.

Würde ich dies auf Selfhost oder auf meinem M1 einrichten?

Sophos:


Ja, du hast jetzt zwei Möglichkeiten:

  1. Einen eigenen Mailserver auf deinem M1 einrichten
  2. Einen externen Anbieter (Selfhost, Posteo, Mailbox.org, IONOS etc.) nutzen

Ich erkläre dir beide Varianten mit den jeweiligen Vor- und Nachteilen:

1️⃣ Eigenen Mailserver auf deinem M1 einrichten (Postfix & Dovecot)

Wenn du vollständige Kontrolle über deine E-Mails möchtest, kannst du auf deinem M1-Server einen eigenen Mailserver einrichten. Dies bedeutet:

✅ Vorteile:

  • Absolute Kontrolle über deine E-Mails
  • Keine Abhängigkeit von Dritten
  • Eigene E-Mail-Adressen @aewi.de für unbegrenzt viele Benutzer
  • Keine monatlichen Kosten

❌ Nachteile:

  • Komplexe Einrichtung (Mailserver + DNS + SPF, DKIM, DMARC)
  • Hohe Wartung (Spam-Schutz, Backups, Updates)
  • Mögliche Blacklist-Probleme (große Provider blockieren eigene Mailserver)

Notwendige Dienste:

  1. Postfix (SMTP-Server für den E-Mail-Versand)
  2. Dovecot (IMAP/POP3-Server für den E-Mail-Empfang)
  3. SpamAssassin + ClamAV (Anti-Spam & Anti-Virus)
  4. Let’s Encrypt SSL/TLS für sichere Verbindungen

Für einen Mailserver auf dem M1 müsstest du DNS-Einstellungen wie MX, SPF, DKIM und DMARC setzen.

2️⃣ Externen Anbieter wie Selfhost, Mailbox.org oder IONOS nutzen

Wenn du weniger Aufwand möchtest, kannst du einen externen E-Mail-Hoster nutzen, der dir Postfächer für @aewi.debereitstellt.

✅ Vorteile:

  • Einfach und schnell eingerichtet
  • Keine Wartung nötig
  • Hohe Verfügbarkeit, kein Risiko von Blacklistings
  • Spam-Filter & Backups vom Anbieter

❌ Nachteile:

  • Monatliche Kosten (1-5€ pro Postfach)
  • Keine vollständige Kontrolle

Empfohlene Anbieter für eigene Domains:

  • Selfhost.de → Günstige Mail-Postfächer für eigene Domains
  • Mailbox.org → Datenschutzfreundlich, sehr gute Features
  • IONOS (1&1) → Direkte Weiterverwendung deiner Domain bei IONOS

Falls du bereits 1&1 (IONOS) nutzt, kannst du dort einfach ein E-Mail-Postfach für @aewi.de einrichten, ohne einen neuen Anbieter zu wählen.

📌 Empfehlung für dich

Da du bereits mit Selfhost arbeitest und deine Domain aewi.de besitzt, empfehle ich:

➡ E-Mail-Hosting bei Selfhost oder IONOS zu aktivieren

➡ Postfix auf dem M1 nur als SMTP-Relay zu nutzen (um Mails aus MediaWiki zu senden)

Falls du den Mailserver selbst hosten willst, können wir das natürlich einrichten – ist aber aufwendiger! 😊

Nikolaos:

Ich habe meine Email von 1und1 für MediaWiki eingerichtet. jetzt ist die Frage, wie ich dies in MediaWIki testen kann, ob MediaWiki E-Mails versendet?

2/2

Sophos:


Du kannst testen, ob MediaWiki erfolgreich E-Mails versenden kann, indem du folgende Methoden ausprobierst:

1️⃣ Passwort-Zurücksetzen-Funktion testen (einfachste Methode)

MediaWiki verschickt automatisch E-Mails, wenn du dein Passwort zurücksetzen möchtest.

So testest du den E-Mail-Versand:

  1. Öffne dein Wiki und logge dich aus.
  2. Gehe zu: https://wiki.aewi.de/index.php?title=Spezial:Passwort_vergessen
  3. Gib deinen Benutzernamen oder deine E-Mail-Adresse ein.
  4. Falls der Mailversand funktioniert, solltest du eine E-Mail erhalten.
  5. Falls keine E-Mail ankommt: Gibt es eine Fehlermeldung oder kommt sie im Spam-Ordner an?

2️⃣ Spezialseite "E-Mail an Benutzer" testen

Falls die Passwort-Zurücksetzung funktioniert, kannst du auch die eingebaute Funktion für Benachrichtigungen testen:

  1. Gehe auf Spezial:Emailuser https://wiki.aewi.de/index.php?title=Spezial:E-Mail_versenden
  2. Wähle einen Benutzer mit einer E-Mail-Adresse.
  3. Sende eine Testnachricht.
  4. Falls der Benutzer die E-Mail erhält, funktioniert MediaWikis E-Mail-System.

3️⃣ Manuell per PHP testen

Falls die oberen Tests fehlschlagen, kannst du prüfen, ob PHP überhaupt E-Mails versenden kann.

  1. Erstelle eine Datei testmail.php in deinem Webserver-Verzeichnis (/Library/WebServer/Documents/ oder /opt/homebrew/var/www/).
  2. Füge folgenden Code ein:

php

KopierenBearbeiten

<?php

$to = "deine-email@aewi.de";

$subject = "MediaWiki E-Mail Test";

$message = "Dies ist eine Test-E-Mail von MediaWiki.";

$headers = "From: wiki@aewi.de\r\n";

if (mail($to, $subject, $message, $headers)) {

    echo "E-Mail wurde erfolgreich gesendet.";

} else {

    echo "E-Mail konnte nicht gesendet werden.";

}

?>

  1. Rufe die Datei in deinem Browser auf: https://wiki.aewi.de/testmail.php
  2. Falls die Nachricht gesendet wird, liegt das Problem in MediaWiki.

4️⃣ Log-Dateien prüfen

Falls keine E-Mails ankommen, prüfe die Log-Dateien von MediaWiki:

  1. MediaWiki Fehlerlog (falls aktiviert): bash KopierenBearbeiten tail -n 50 /var/log/mediawiki.log
  2. Mailserver-Log (Postfix, falls lokal genutzt): bash KopierenBearbeiten tail -n 50 /var/log/mail.log

Falls MediaWiki eine Fehlermeldung ausgibt oder Logs vorhanden sind, kann man den Fehler weiter eingrenzen.

Falls keine E-Mail ankommt, müssen wir prüfen, ob:

  • Die richtige SMTP-Konfiguration in LocalSettings.php steht.
  • PHP mail() funktioniert (Testmail oben).
  • Deine 1&1 Mailserver die E-Mails blockieren (SPF/DKIM-Fehler?).

Teste das mal und sag mir, was passiert! 😊

Nikolaos:

Hat MediaWiki einen eigenen MailServer integriert. Ich verstehe nicht wie das funktioniert, wenn auf dem M1 und MediaWiki kein MailServer installiert ist. Erkläre es mir bitte.

Sophos:


MediaWiki hat keinen eigenen Mailserver, sondern nutzt externe Mailserver, um E-Mails zu versenden. Die E-Mails werden entweder über die PHP mail()-Funktion oder über einen SMTP-Server versendet.

🔹 Wie funktioniert der E-Mail-Versand in MediaWiki?

MediaWiki kann auf zwei Arten E-Mails versenden:

1️⃣ PHP mail()-Funktion (Standard)

  • PHP enthält die Funktion mail(), die mit dem auf dem Betriebssystem installierten Mailserver zusammenarbeitet.
  • macOS hat normalerweise Postfix als Mailserver installiert.
  • MediaWiki ruft mail() auf, Postfix versendet die E-Mail.
  • Problem: Wenn kein Mailserver auf dem M1 läuft oder falsch konfiguriert ist, funktioniert das nicht.

📌 Lösung: Falls kein Mailserver installiert ist, musst du entweder einen installieren (Postfix) oder SMTP benutzen.

2️⃣ SMTP-Server (Empfohlen)

  • Anstatt einen lokalen Mailserver zu nutzen, kann MediaWiki über einen externen Mailserver E-Mails verschicken (z. B. 1und1, Google, Mailgun).
  • Du gibst in LocalSettings.php deine SMTP-Zugangsdaten an.
  • MediaWiki verbindet sich dann mit dem Mailserver von 1und1 und sendet die E-Mails über diesen Server.

📌 Vorteil: Kein lokaler Mailserver erforderlich, funktioniert sofort!

🔹 SMTP in MediaWiki einrichten (Empfohlen)

Da du eine E-Mail-Adresse von 1und1 hast (klaus.feldmann@online.de), kannst du MediaWiki so konfigurieren, dass es die E-Mails über den 1und1 SMTP-Server sendet.

Füge folgende Zeilen in LocalSettings.php ein:

php

KopierenBearbeiten

$wgEnableEmail = true;

$wgEnableUserEmail = true;

$wgEmergencyContact = "klaus.feldmann@online.de";

$wgPasswordSender = "klaus.feldmann@online.de";

$wgSMTP = [

    'host'     => 'smtp.1und1.de', # SMTP-Server von 1und1

    'IDHost'   => 'online.de', # Domain

    'port'     => 587, # Port 587 für TLS (Alternativ: 465 für SSL)

    'username' => 'klaus.feldmann@online.de', # Dein 1und1-Login

    'password' => 'DEIN_PASSWORT', # Dein Passwort für 1und1

    'auth'     => true, # Authentifizierung aktivieren

    'secure'   => 'tls' # 'tls' für TLS, 'ssl' für SSL

];

⚠️ WICHTIG:

  • Ersetze DEIN_PASSWORT mit deinem echten Passwort (oder benutze einen App-Spezifischen Key von 1und1, falls verfügbar).
  • Falls TLS nicht funktioniert, probiere secure => 'ssl' und port => 465.

🔹 Wie teste ich, ob E-Mail funktioniert?

Nachdem du die LocalSettings.php geändert hast, kannst du testen, ob E-Mail funktioniert:

1️⃣ Passwort-Zurücksetzen-Funktion testen

  1. Gehe zu: https://wiki.aewi.de/index.php?title=Spezial:Passwort_vergessen
  2. Gib deine E-Mail-Adresse ein.
  3. Falls alles funktioniert, solltest du eine E-Mail erhalten.

2️⃣ Spezialseite "E-Mail an Benutzer" testen

  1. Gehe zu: https://wiki.aewi.de/index.php?title=Spezial:E-Mail_versenden
  2. Wähle einen Benutzer mit einer hinterlegten E-Mail.
  3. Sende eine Testnachricht.

🔹 Alternative: Lokalen Mailserver einrichten (Postfix)

Falls du keinen externen SMTP-Server nutzen willst, kannst du auf deinem M1 einen Mailserver (Postfix) einrichten.

Dies ist komplizierter, weil du:

  • Postfix konfigurieren musst.
  • SPF/DKIM/DMARC für deine Domain setzen musst.
  • Wahrscheinlich von vielen E-Mail-Anbietern blockiert wirst.

Daher empfehle ich SMTP mit 1und1, weil es schneller, einfacher und sicherer ist.

🚀 Fazit

  • Beste Lösung: SMTP mit 1und1 in LocalSettings.php einrichten.
  • Test: Spezialseite Spezial:Passwort_vergessen oder Spezial:E-Mail_versenden.
  • Kein eigener Mailserver nötig, da MediaWiki SMTP nutzen kann.

Falls du weitere Fragen hast, sag Bescheid! 😊

Nikolaos:

E-Mail an Benutzer und Passwort zurücksetzen kann ich erst benutzen, wenn meine E-Mail Adresse beim MediaWiki bestätigt ist.

Ich habe Email in MediaWiki mit meinem 1und1 account eingestellt und eine Email aus MediaWiki zur Bestätigung meiner E-MAil Adresse abgesendet. Ich habe jedoch keine bekommen.

Muß im M1 Sever oder dnsmasq noch etwas eingerichtet werden, damit E-MAils versendet werden können. Müssen eventuell Ports bei M1 und oder Fritz!Box freigegeben werden?

Sophos:


Wenn du keine E-Mail von MediaWiki bekommst, kann das mehrere Ursachen haben. Lass uns die möglichen Fehlerquellen systematisch durchgehen.

🔍 1. Überprüfung der MediaWiki SMTP-Einstellungen

Bitte öffne LocalSettings.php und überprüfe, ob die SMTP-Einstellungen korrekt sind:

php

KopierenBearbeiten

$wgEnableEmail = true;

$wgEnableUserEmail = true;

$wgEmergencyContact = "klaus.feldmann@online.de";

$wgPasswordSender = "klaus.feldmann@online.de";

$wgSMTP = [

    'host'     => 'smtp.1und1.de', # 1&1 SMTP-Server

    'IDHost'   => 'online.de', # Domain

    'port'     => 587, # TLS (Alternativ: 465 für SSL)

    'username' => 'klaus.feldmann@online.de', # Dein 1&1-Login

    'password' => 'DEIN_PASSWORT', # Dein Passwort für 1&1

    'auth'     => true,

    'secure'   => 'tls' # 'tls' oder 'ssl'

];

Falls TLS nicht funktioniert, versuche secure => 'ssl' und port => 465.

➡️ Falls hier ein Fehler ist, werden E-Mails nicht gesendet!

🔍 2. Teste den E-Mail-Versand direkt über PHP

Um zu testen, ob PHP generell E-Mails über 1und1 versenden kann, erstelle eine Datei testmail.php im Webserver-Ordner /Library/WebServer/Documents/ mit folgendem Inhalt:

php

KopierenBearbeiten

<?php

$to = "DEINE_EMAIL@online.de";

$subject = "Test-Mail von MediaWiki";

$message = "Wenn du diese Nachricht erhältst, funktioniert der SMTP-Versand.";

$headers = "From: klaus.feldmann@online.de" . "\r\n" .

          "Reply-To: klaus.feldmann@online.de" . "\r\n" .

          "X-Mailer: PHP/" . phpversion();

$mail_sent = mail($to, $subject, $message, $headers);

if ($mail_sent) {

    echo "E-Mail wurde gesendet!";

} else {

    echo "E-Mail konnte nicht gesendet werden.";

}

?>

Dann rufe im Browser auf:

🔗 https://aewi.de/testmail.php

📌 Falls hier ein Fehler kommt, liegt es an der PHP-Mail-Funktion oder der Firewall.

🔍 3. MediaWiki-Fehlerlog überprüfen

MediaWiki speichert Fehler manchmal in einem Log. Führe im Terminal aus:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/log/httpd/aewi_error.log

Falls dort ein Fehler steht wie Could not authenticate, dann gibt es ein Problem mit den SMTP-Einstellungen oder dem Passwort.

🔍 4. Überprüfe, ob Ports blockiert sind (Firewall & Fritz!Box)

Da dein M1-Server hinter einer Fritz!Box läuft, könnte die Firewall bestimmte Ports blockieren.

🔥 1. M1-Firewall prüfen

Öffne das Terminal und gib ein:

bash

KopierenBearbeiten

sudo pfctl -sr | grep 587

Falls keine Ausgabe kommt, könnte die Firewall Port 587 blockieren.

Lösung: Erlaube den Ausgangs-Traffic über Port 587:

bash

KopierenBearbeiten

sudo pfctl -F all

🔥 2. Fritz!Box: Portfreigabe prüfen

  1. Gehe ins Fritz!Box-Menü: http://fritz.box
  2. Internet > Filter > Listen > Gesperrte Ports → Stelle sicher, dass Port 587 oder 465 nicht gesperrt sind.
  3. Internet > Freigaben > Portfreigaben → Stelle sicher, dass ausgehende SMTP-Verbindungen erlaubt sind.

Falls Port 587 oder 465 gesperrt ist, füge eine Freigabe für SMTP (Mail-Versand) hinzu.

🔍 5. E-Mail-Logs von 1und1 prüfen

Falls der Fehler immer noch besteht, logge dich in dein 1und1 E-Mail-Konto ein:

📌 https://login.ionos.de/ → E-Mail-Postfach

Dort gibt es oft ein E-Mail-Protokoll oder eine Fehlernachricht, falls 1und1 die E-Mail ablehnt.

🔍 6. DNS-Einstellungen für E-Mail-Versand (SPF, DKIM, DMARC)

Wenn du später @aewi.de als Absender nutzen willst, musst du in deinem DNS-Server (Selfhost oder Fritz!Box) SPF, DKIM und DMARC-Einträge setzen.

Das ist aber für den aktuellen Test nicht nötig!

🚀 Fazit

1️⃣ Teste mit testmail.php, ob PHP überhaupt E-Mails versenden kann.

2️⃣ Überprüfe das MediaWiki-Errorlog, ob dort ein SMTP-Fehler steht.

3️⃣ Firewall & Fritz!Box prüfen, ob Port 587 (TLS) oder 465 (SSL) blockiert ist.

4️⃣ Logge dich in 1und1 ein, um Fehlernachrichten zu sehen.

Falls du noch Fragen hast oder weitere Tests brauchst, sag Bescheid! 😊

Nikolaos:

ist die Portfreigabe für den M1 für SSL auf TCP zu stellen?

Sophos:


Ja, die Portfreigabe für SSL auf dem M1 sollte auf TCP gestellt werden, da E-Mail-Kommunikation über das Transmission Control Protocol (TCP) läuft.

🚀 Relevante Ports für den Mail-Versand (SMTP)

Für den E-Mail-Versand aus MediaWiki über 1&1 (IONOS) benötigst du folgende ausgehenden TCP-Ports:

Protokoll Port Beschreibung
SMTP (SSL) 465 Sichere E-Mail-Übertragung mit SSL
SMTP (TLS) 587 Sichere E-Mail-Übertragung mit STARTTLS
SMTP (Unverschlüsselt) 25 Wird oft blockiert, nicht empfohlen

📌 Empfohlen:

  • Port 587 (TLS), wenn $wgSMTP['secure'] = 'tls';
  • Port 465 (SSL), wenn $wgSMTP['secure'] = 'ssl';

🔍 Port 25 nicht freigeben! Viele Provider (auch 1und1) blockieren ihn für den ausgehenden Mail-Versand.

🛠️ 1. Firewall auf dem M1 für ausgehenden Mail-Verkehr freigeben

  1. Terminal öffnen und folgenden Befehl ausführen: bash KopierenBearbeiten sudo pfctl -sr | grep 465
  2. Falls keine Ausgabe kommt, könnte die Firewall den Mail-Verkehr blockieren.
  3. Regel setzen, um ausgehende Mails zu erlauben: bash KopierenBearbeiten sudo pfctl -F all

Falls du eine spezifische Regel für Port 465 oder 587 hinzufügen willst:

bash

KopierenBearbeiten

echo "pass out quick on en0 proto tcp from any to any port {465, 587} keep state" | sudo pfctl -f /etc/pf.conf

Dann die Firewall neu starten:

bash

KopierenBearbeiten

sudo pfctl -f /etc/pf.conf && sudo pfctl -e

🛠️ 2. Fritz!Box: Portfreigabe für SMTP

  1. Logge dich auf der Fritz!Box ein (http://fritz.box).
  2. Gehe zu: Internet → Freigaben → Portfreigaben.
  3. Neue Freigabe hinzufügen:
    • Protokoll: TCP
    • Portbereich: 465 - 465 oder 587 - 587 (je nachdem, was du nutzt)
    • Gerät: M1-Server (z.B. AEWI.local oder IP 192.168.2.3)
    • Freigabetyp: Nur ausgehend (keine eingehenden SMTP-Verbindungen nötig!)
  1. Speichern und Router neu starten.

🛠️ 3. Testen, ob die Ports nun offen sind

Führe auf dem M1 folgenden Befehl aus:

bash

KopierenBearbeiten

nc -zv smtp.1und1.de 587

Falls alles richtig konfiguriert ist, sollte erscheinen:

bash

KopierenBearbeiten

Connection to smtp.1und1.de port 587 [tcp/smtp] succeeded!

Falls kein Erfolg, überprüfe:

  • Fritz!Box Einstellungen (Ports freigegeben?)
  • M1-Firewall (pfctl-Regeln richtig?)
  • 1und1 E-Mail-Logins in MediaWiki korrekt?

🔍 Fazit

✅ Ja, die Portfreigabe für SSL (Port 465) oder TLS (Port 587) muss auf TCP gestellt werden.

✅ Freigabe auf der Fritz!Box für ausgehende Verbindungen

✅ M1-Firewall prüfen und ggf. Port manuell öffnen

✅ Mit nc -zv smtp.1und1.de 587 testen, ob die Verbindung klappt.

Falls du Fragen hast oder der Test fehlschlägt, sag Bescheid! 🚀😊

Nikolaos:

was muß als IDHost für 1und1.de eingetragen werden?

'host'     => "smtp.1und1.de",  # Dein SMTP-Server

'IDHost'   => "1und1.de",       # Deine Domain

ist das richtig?

2/2

Sophos:


Ja, das ist fast richtig, aber für 1und1 (IONOS) solltest du als IDHost deine eigene Domain verwenden, also die Domain, von der aus du die E-Mails verschickst.

🔹 Richtig für deine 1und1 E-Mail (klaus.feldmann@online.de):

php

KopierenBearbeiten

$wgSMTP = [

    'host'     => "smtp.1und1.de",   # Der SMTP-Server von 1und1/IONOS

    'IDHost'   => "online.de",       # Deine Absender-Domain

    'port'     => 587,               # Nutze 587 für STARTTLS oder 465 für SSL

    'auth'     => true,              # Authentifizierung erforderlich

    'username' => "klaus.feldmann@online.de",

    'password' => "dein_passwort",

    'secure'   => "tls",             # Alternativ "ssl" bei Port 465

];

🔹 Falls du eine eigene Domain nutzt (aewi.de):

Falls du eine eigene Domain (z. B. aewi.de) als Absender nutzen möchtest, dann sollte IDHost entsprechend geändert werden:

php

KopierenBearbeiten

'IDHost'   => "aewi.de",

Aber Achtung:

1&1 (IONOS) könnte E-Mails mit einer nicht registrierten From-Adresse (@aewi.de) blockieren, wenn sie nicht zu deinem 1&1-Konto gehört.

🔍 Fazit

  • IDHost sollte die Domain des Absenders sein.
  • Für 1und1-Adressen (@online.de, @gmx.de, etc.): php KopierenBearbeiten 'IDHost' => "online.de"
  • Für eigene Domains (z. B. aewi.de): php KopierenBearbeiten 'IDHost' => "aewi.de"
  • Nutze Port 587 mit TLS oder Port 465 mit SSL.

Falls E-Mails nicht ankommen, überprüfe die SPF/DKIM-Einstellungen deiner Domain in den 1und1-DNS-Einträgen! 😊🚀

Nikolaos:

Hallo. MariaDB startet nicht mehr beim Neustart des M1.

Gebe mir bitte gemäß unserer Installation aus diesem Chat die Befehle, wie ich testen kann, warum das so ist.

Sophos:


Hallo! Um herauszufinden, warum MariaDB beim Neustart nicht mehr automatisch startet, folge diesen Schritten:

1️⃣ Prüfe den Status von MariaDB nach dem Neustart

bash

KopierenBearbeiten

sudo brew services list | grep mariadb

Falls es als "stopped" angezeigt wird, bedeutet das, dass es nicht automatisch gestartet wurde.

2️⃣ Prüfe, ob MariaDB manuell gestartet werden kann

bash

KopierenBearbeiten

sudo brew services restart mariadb@10.5

Falls MariaDB jetzt funktioniert, aber nach einem Neustart nicht mehr, gibt es ein Problem mit der Autostart-Konfiguration.

3️⃣ Starte MariaDB manuell und prüfe die Fehler

bash

KopierenBearbeiten

sudo mariadbd --user=_mysql --datadir=/opt/homebrew/var/mariadb --socket=/opt/homebrew/var/mariadb/mariadb.sock

Falls es nicht startet, wird eine Fehlermeldung ausgegeben.

4️⃣ Überprüfe die Log-Dateien

Zeige die letzten 50 Zeilen des Fehlerprotokolls an:

bash

KopierenBearbeiten

tail -n 50 /opt/homebrew/var/mariadb/mariadb.err

Falls die Datei nicht existiert, prüfe:

bash

KopierenBearbeiten

ls -lah /opt/homebrew/var/mariadb/

Falls mariadb.err fehlt, wurde sie nicht erstellt oder hat keine Schreibrechte.

5️⃣ Prüfe, ob der Dienst in launchctl registriert ist

bash

KopierenBearbeiten

sudo launchctl list | grep mariadb

Falls der Dienst nicht registriert ist, bedeutet das, dass die .plist-Datei fehlt oder fehlerhaft ist.

6️⃣ Prüfe die .plist-Datei von MariaDB

bash

KopierenBearbeiten

cat /Library/LaunchDaemons/com.mariadb.server.plist

Falls sie nicht existiert, muss sie neu erstellt werden.

Falls sie existiert, kannst du versuchen, sie manuell zu laden:

bash

KopierenBearbeiten

sudo launchctl bootstrap system /Library/LaunchDaemons/com.mariadb.server.plist

Falls das fehlschlägt, könnte ein Berechtigungsproblem vorliegen.

7️⃣ Überprüfe die Berechtigungen der .plist-Datei

bash

KopierenBearbeiten

ls -lah /Library/LaunchDaemons/ | grep mariadb

Falls com.mariadb.server.plist nicht root:wheel gehört, setze die Berechtigungen richtig:

bash

KopierenBearbeiten

sudo chown root:wheel /Library/LaunchDaemons/com.mariadb.server.plist

sudo chmod 644 /Library/LaunchDaemons/com.mariadb.server.plist

Danach erneut versuchen, die Datei zu laden:

bash

KopierenBearbeiten

sudo launchctl bootstrap system /Library/LaunchDaemons/com.mariadb.server.plist

8️⃣ Prüfe, ob die Konfigurationsdateien korrekt sind

Prüfe, ob my.cnf an der richtigen Stelle liegt:

bash

KopierenBearbeiten

ls -lah /opt/homebrew/etc/my.cnf

cat /opt/homebrew/etc/my.cnf

Falls my.cnf fehlt oder falsch ist, muss sie korrigiert werden.

9️⃣ Prüfe, ob der MariaDB-Binary existiert

bash

KopierenBearbeiten

ls -lah /opt/homebrew/opt/mariadb@10.5/bin/mariadbd

Falls mariadbd nicht existiert, könnte MariaDB beschädigt sein.

Dann versuche eine Neuinstallation:

bash

KopierenBearbeiten

brew uninstall mariadb@10.5

brew install mariadb@10.5

🔍 Fazit

  • Falls MariaDB manuell startet, aber nicht automatisch, liegt es an launchctl oder der .plist-Datei.
  • Falls MariaDB gar nicht startet, überprüfe die Log-Dateien und Berechtigungen.
  • Falls my.cnf oder die .plist-Datei falsch ist, müssen sie korrigiert werden.

Führe die Tests durch und sende mir die Fehlerausgaben! 😊🚀

Nikolaos:

1. sudo mariadbd --user=_mysql --datadir=/opt/homebrew/var/mariadb --socket=/opt/homebrew/var/mariadb/mariadb.sock

2025-02-24 16:11:46 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mariadb/ is case insensitive

mariadbd: Can't create file '/opt/homebrew/var/mariadb/mariadb.err' (errno: 13 "Permission denied")

2025-02-24 16:11:46 0 [Note] Starting MariaDB 10.5.28-MariaDB-log source revision 7eded23be6597b4c485e8cad1538f2ae14541f91 server_uid VRGbu/3gwfDm4tZskCDjP9JYCaM= as process 5340

2025-02-24 16:11:46 0 [ERROR] mariadbd: File '/opt/homebrew/var/mariadb/aria_log_control' not found (Errcode: 13 "Permission denied")

2025-02-24 16:11:46 0 [ERROR] mariadbd: Got error 'Can't open file' when trying to use aria control file '/opt/homebrew/var/mariadb/aria_log_control'

2025-02-24 16:11:46 0 [ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.

2025-02-24 16:11:46 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2025-02-24 16:11:46 0 [ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable

2025-02-24 16:11:46 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

2025-02-24 16:11:46 0 [Note] Plugin 'FEEDBACK' is disabled.

2025-02-24 16:11:46 0 [ERROR] Could not open mysql.plugin table: "Unknown storage engine 'Aria'". Some plugins may be not loaded

2025-02-24 16:11:46 0 [ERROR] Failed to initialize plugins.

2025-02-24 16:11:46 0 [ERROR] Aborting

2. tail -n 50 /opt/homebrew/var/mariadb/mariadb.err

250224 08:23:14 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:23:14 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:23:14 0 [ERROR] Aborting

250224 08:23:14 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:23:24 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:23:24 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:23:24 0 [ERROR] Aborting

250224 08:23:24 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:23:34 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:23:34 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:23:34 0 [ERROR] Aborting

250224 08:23:34 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:23:45 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:23:45 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:23:45 0 [ERROR] Aborting

250224 08:23:45 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:23:55 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:23:55 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:23:55 0 [ERROR] Aborting

250224 08:23:55 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:24:05 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:24:05 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:24:05 0 [ERROR] Aborting

250224 08:24:05 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:24:15 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:24:15 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:24:15 0 [ERROR] Aborting

250224 08:24:15 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

250224 08:24:25 mysqld_safe Starting mariadbd daemon with databases from /opt/homebrew/var/mysql

2025-02-24  8:24:25 0 [Warning] Setting lower_case_table_names=2 because file system for /opt/homebrew/var/mysql/ is case insensitive

/opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!

2025-02-24  8:24:25 0 [ERROR] Aborting

250224 08:24:25 mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/dns.fritz.box.pid ended

2025-02-24  8:31:11 0 [Note] /opt/homebrew/opt/mariadb@10.5/bin/mariadbd (initiated by: unknown): Normal shutdown

2025-02-24  8:31:11 0 [Note] InnoDB: FTS optimize thread exiting.

2025-02-24  8:31:11 0 [Note] InnoDB: Starting shutdown...

2025-02-24  8:31:11 0 [Note] InnoDB: Dumping buffer pool(s) to /opt/homebrew/var/mariadb/ib_buffer_pool

2025-02-24  8:31:11 0 [ERROR] InnoDB: Cannot open '/opt/homebrew/var/mariadb/ib_buffer_pool.incomplete' for writing: Permission denied

2025-02-24  8:31:11 0 [ERROR] InnoDB: Operating system error number 13 in a file operation.

2025-02-24  8:31:11 0 [ERROR] InnoDB: The error means mysqld does not have the access rights to the directory.

2025-02-24  8:31:11 0 [Note] InnoDB: Shutdown completed; log sequence number 6446020822; transaction id 146814

2025-02-24  8:31:11 0 [Note] Event Scheduler: Purging the queue. 0 events

2025-02-24  8:31:11 0 [Note] /opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Shutdown complete

3. sudo launchctl list | grep mariadb

- 1 com.mariadb.server

Hast du eine Idee?

Sophos:


Ja, ich sehe mehrere Probleme, die dazu führen, dass MariaDB nicht richtig startet:

🔍 Analyse der Fehler

  1. Fehlende Schreibrechte auf /opt/homebrew/var/mariadb/ swift KopierenBearbeiten mariadbd: Can't create file '/opt/homebrew/var/mariadb/mariadb.err' (errno: 13 "Permission denied")
  2. → MariaDB hat keine Berechtigung, die Datei zu schreiben → Berechtigungen müssen überprüft und ggf. korrigiert werden
  3. Fehlende Schreibrechte auf InnoDB-Datenbankdateien swift KopierenBearbeiten 2025-02-24  8:31:11 0 [ERROR] InnoDB: Cannot open '/opt/homebrew/var/mariadb/ib_buffer_pool.incomplete' for writing: Permission denied
  4. → InnoDB kann seine Dateien nicht bearbeiten → MariaDB läuft möglicherweise nicht mit dem richtigen Benutzer
  5. Problem mit mysqld_safe und launchctl swift KopierenBearbeiten /opt/homebrew/opt/mariadb@10.5/bin/mariadbd: Please consult the Knowledge Base to find out how to run mysqld as root!
  6. → MariaDB versucht, als root zu laufen, aber das ist nicht erlaubt. → launchctl oder homebrew.mxcl.mariadb@10.5.plist könnte falsch konfiguriert sein.

🔧 Schritt-für-Schritt-Lösung

1️⃣ Prüfe und korrigiere die Berechtigungen

Führe folgenden Befehl aus, um die Berechtigungen richtig zu setzen:

bash

KopierenBearbeiten

sudo chown -R _mysql:_mysql /opt/homebrew/var/mariadb

sudo chmod -R 755 /opt/homebrew/var/mariadb

🔹 Erklärung:

  • chown -R _mysql:_mysql: Setzt _mysql als Besitzer für den gesamten MariaDB-Ordner
  • chmod -R 755: Setzt Lese- und Schreibrechte für _mysql

2️⃣ Prüfe, ob der MariaDB-Prozess noch läuft

bash

KopierenBearbeiten

ps aux | grep mariadb

Falls ein Prozess läuft, stoppe ihn:

bash

KopierenBearbeiten

sudo killall -9 mariadbd

3️⃣ Prüfe, ob launchctl den richtigen Dienst verwendet

bash

KopierenBearbeiten

sudo launchctl list | grep mariadb

Falls dort homebrew.mxcl.mariadb@10.5 steht, muss Homebrew den Dienst korrekt registrieren.

Falls nicht, dann versuche folgendes:

bash

KopierenBearbeiten

sudo launchctl unload /Library/LaunchDaemons/com.mariadb.server.plist

sudo launchctl load /Library/LaunchDaemons/com.mariadb.server.plist

Falls das nicht hilft, kannst du MariaDB erneut mit Homebrew registrieren:

bash

KopierenBearbeiten

sudo brew services restart mariadb@10.5

4️⃣ Prüfe die MySQL-Konfigurationsdatei (my.cnf)

Falls Homebrew die falsche Datenbankdatei benutzt, stelle sicher, dass sie korrekt konfiguriert ist:

bash

KopierenBearbeiten

cat /opt/homebrew/etc/my.cnf

Sie sollte enthalten:

ini

KopierenBearbeiten

[mysqld]

datadir = /opt/homebrew/var/mariadb

socket = /opt/homebrew/var/mariadb/mariadb.sock

bind-address = 127.0.0.1

[client]

socket = /opt/homebrew/var/mariadb/mariadb.sock

Falls datadir oder socket auf /opt/homebrew/var/mysql verweist, ändere es auf /opt/homebrew/var/mariadb.

5️⃣ Prüfe, ob MariaDB nun startet

bash

KopierenBearbeiten

sudo mariadbd --user=_mysql --datadir=/opt/homebrew/var/mariadb --socket=/opt/homebrew/var/mariadb/mariadb.sock

Falls es ohne Fehler läuft, beende es mit CTRL + C und starte es über Homebrew:

bash

KopierenBearbeiten

sudo brew services start mariadb@10.5

✅ Erwartetes Ergebnis

Nach diesen Schritten sollte MariaDB:

  • Automatisch beim Booten starten
  • Keine Fehler mehr wegen fehlender Berechtigungen haben
  • Über brew services list als "started" angezeigt werden

🚀 Falls es noch Probleme gibt

Falls MariaDB nach einem Neustart wieder nicht startet:

  1. Poste die Ausgabe von: bash KopierenBearbeiten ls -lah /opt/homebrew/var/mariadb/
  2. sudo launchctl list | grep mariadb
  3. tail -n 50 /opt/homebrew/var/mariadb/mariadb.err
  4. Falls nötig, lösche den mariadb.sock-Socket und starte MariaDB neu: bash KopierenBearbeiten sudo rm -f /opt/homebrew/var/mariadb/mariadb.sock
  5. sudo brew services restart mariadb@10.5

Probiere die Schritte aus und gib mir Bescheid! 😊🚀

Nikolaos:

Ich habe nur die Berechtigungen neu gesetzt. MariaDB ist wieder beim Neustart automatisch gestartet. Danke für die Unterstützung.

Sophos:


Super! 🎉 Dass es nur an den Berechtigungen lag, zeigt, wie wichtig es ist, die richtigen Nutzerrechte für MariaDB sicherzustellen. Jetzt läuft alles wieder automatisch beim Neustart – genau so soll es sein.

Falls du noch weitere Fragen hast oder wir demnächst ElasticSearch für MediaWiki installieren, sag einfach Bescheid. 🚀😃