Skip to main content

Die Shop-Verbindung einrichten

Die Verbindung richten Sie einmalig unter System → Plugins im Eintrag System - JTL Source ein. Die Einstellungen liegen in zwei Reitern: JTL Shop Datenbank und Plugin-Optionen.

Zuerst: einen eigenen Datenbankbenutzer anlegen

Verwenden Sie nicht den Datenbankbenutzer des Shops. Legen Sie im Shop-Datenbankserver einen eigenen Benutzer an, der ausschließlich lesen darf. Die Erweiterung schreibt nie — ein Benutzer mit Schreibrechten wäre also ein Risiko ohne Gegenwert.

Ein Beispiel für MySQL. Ersetzen Sie Schemanamen, Benutzernamen, Passwort und die Adresse, von der aus zugegriffen wird:

CREATE USER 'joomla_lesen'@'203.0.113.10' IDENTIFIED BY 'ein-langes-passwort';
GRANT SELECT ON jtlshop.tartikel                     TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelmerkmal              TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelsprache              TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelpict                 TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelsichtbarkeit         TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tattribut                    TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tattributsprache             TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaft                 TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftkombiwert        TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftsichtbarkeit     TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftsprache          TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwert             TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertaufpreis     TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertpict         TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertsichtbarkeit TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.teigenschaftwertsprache      TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.thersteller                  TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tkategorie                   TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tkategorieartikel            TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmal                     TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmalwert                 TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tmerkmalwertsprache          TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tpreis                       TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tpreisdetail                 TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tsprache                     TO 'joomla_lesen'@'203.0.113.10';
FLUSH PRIVILEGES;

Ab Version 1.12.0 stehen hier andere Tabellen als vorher. Die Liste nannte bis 1.11.0 zwei Namen, die es im JTL Shop nicht gibt — die Erweiterung fragte sie ab, und die Felder Attribute und Varianten blieben deshalb immer leer. Wer die Rechte einzeln vergeben hat, vergibt die neuen bitte nach. Wer GRANT SELECT ON jtlshop.* benutzt hat, muss nichts tun.

Ab Version 1.13.0 kommt teigenschaftkombiwert hinzu. Daraus liest die Erweiterung Lagerbestand und Artikelnummer der Varianten von Artikeln mit Variantenkombinationen. Fehlt das Recht, funktioniert alles wie bisher — nur bleiben diese beiden Angaben bei solchen Artikeln leer.

Das t am Anfang der Tabellennamen ist das übliche JTL-Präfix. Weicht Ihres ab, passen Sie die Namen an — und tragen Sie es unten im Feld Tabellen-Präfix ein.

Wer es einfacher haben will, vergibt GRANT SELECT ON jtlshop.* . Das ist großzügiger als nötig, aber immer noch deutlich besser als ein Benutzer mit Schreibrechten.

Reiter „JTL Shop Datenbank“

Datenbank-HostAdresse des Datenbankservers. Liegt der Shop auf demselben Server, meist localhost.
DatenbanknameName des Schemas, etwa jtlshop.
Datenbank-BenutzerDer eben angelegte Lesebenutzer.
Datenbank-PasswortEin gespeichertes Passwort wird nicht angezeigt und nicht an den Browser geschickt; das Feld trägt dann nur den Hinweis, dass eines gespeichert ist. Lassen Sie es leer, bleibt das Passwort erhalten. Passwort entfernen löscht es beim Speichern. Zur Speicherung siehe unten.
Tabellen-PräfixVorgabe t.
Datenbank-PortVorgabe 3306.
Verschlüsselung (TLS)Vorgabe Aus. Siehe „Verbindung von außen“ weiter unten.
CA-DateiNur bei eingeschalteter Verschlüsselung und nur, wenn das Zertifikat des Datenbankservers nicht von einer allgemein anerkannten Stelle stammt: der vollständige Pfad zur CA-Datei auf dem Joomla-Server.

Host oder Port ändern: Passwort neu eingeben. Das gespeicherte Passwort gilt nur für den Server, für den es gespeichert wurde. Ändern Sie Host oder Port und lassen das Passwortfeld leer, lehnt das Formular das Speichern mit einem Hinweis ab. So kann niemand das Passwort an einen anderen Server umleiten.

Die Verbindung prüfen

Über dem ersten Feld liegt die Schaltfläche Datenbankverbindung testen. Sie prüft, ohne zu speichern:

  • ob die Verbindung mit diesen Daten zustande kommt,
  • welche MySQL-Version antwortet,
  • wie viele Tabellen mit Ihrem Präfix vorhanden sind,
  • und ob eine der neun Tabellen fehlt, ohne die eine Anbindung sinnlos wäre.

Der Reiter JTL Shop Datenbank mit der Schaltfläche Datenbankverbindung testen, der Rückmeldung: Verbindung erfolgreich, Datenbank jtlshop_demo (MySQL 8.4.11), 26 Tabellen gefunden, und den Feldern bis Verschlüsselung (TLS)

Werden fehlende Tabellen gemeldet, stimmt in aller Regel das Präfix nicht. Fehlt nur tartikelsichtbarkeit, fehlt meist das Leserecht darauf; dann zeigen die Produktlisten in der Vorgabe keine Produkte (siehe Wenn die Sichtbarkeit nicht geprüft werden kann unten).

Bleibt das Passwortfeld leer, testet die Prüfung mit dem gespeicherten Passwort, aber nur gegen den gespeicherten Host und Port. Für einen anderen Server verlangt sie die Eingabe.

Die Prüfung dürfen nur Super User starten. Alle anderen, auch Administratoren, sehen statt der Schaltfläche einen Hinweis; die übrigen Einstellungen können sie weiter ändern. Bis Version 1.15.0 reichte das Recht ACL & Optionen konfigurieren für die Plugins, bis Version 1.14.0 das Recht, Erweiterungen zu verwalten. Bis Version 1.9.8 war sie ohne Anmeldung aufrufbar — ein weiterer Grund, auf 1.10.0 zu aktualisieren.

Reiter „Plugin-Optionen“

Shop Basis-URLAdresse des Shops, etwa https://shop.example.de. Daraus werden die Bild- und Artikeladressen zusammengesetzt. Bleibt das Feld leer, wird die Adresse der Joomla-Website verwendet — und die Bilder gehen ins Leere.
Standard-WährungWährungskürzel für die Preisausgabe, Vorgabe EUR.
StandardspracheISO-Kürzel der Sprache, in der die Artikeldaten geführt werden, Vorgabe ger. Steuert, welche übersetzten Attributnamen gelesen werden. Bei einem englischsprachigen Shop etwa eng.
KundengruppeAus Sicht dieser Kundengruppe liest die Website den Shop, Vorgabe 1. Sie bestimmt zweierlei: welcher Preis ausgegeben wird und welche Produkte als sichtbar gelten. In den meisten Shops ist 1 die Standardgruppe — welche es bei Ihnen ist, sehen Sie im Shop-Backend unter Kunden → Kundengruppen.
Wenn die Sichtbarkeit nicht geprüft werden kannGilt, wenn tartikelsichtbarkeit fehlt oder das Lesekonto sie nicht lesen darf. Dann ist unbekannt, welche Produkte im Shop gesperrt sind. Vorgabe Keine Produkte zeigen; Alle Produkte zeigen, auch gesperrte ist das Verhalten bis Version 1.14.0.

Der Reiter Plugin-Optionen mit den Feldern Shop Basis-URL, Standard-Währung, Standardsprache, Kundengruppe und Wenn die Sichtbarkeit nicht geprüft werden kann

Wo das Passwort landet

Joomla speichert Plugin-Einstellungen unverschlüsselt in der eigenen Datenbank. Das gilt auch für dieses Passwort — Joomla bietet für Plugin-Parameter nichts anderes an, und keine Erweiterung kann daran etwas ändern.

Daraus folgt die Empfehlung oben: ein eigener Benutzer, der ausschließlich lesen darf. Dann ist der Schaden begrenzt, falls jemand an die Joomla-Datenbank kommt.

Verbindung von außen

Liegen Shop und Website auf verschiedenen Servern, muss der MySQL-Server des Shops Verbindungen von außen annehmen. Grenzen Sie das so weit wie möglich ein:

  • Den Benutzer an die IP-Adresse Ihres Joomla-Servers binden — genau das bewirkt der Teil @'203.0.113.10' oben.
  • Port 3306 in der Firewall nur für diese eine Adresse öffnen.
  • Die Verbindung verschlüsseln: mit der Einstellung Verschlüsselung (TLS), oder über ein VPN oder einen SSH-Tunnel statt über das offene Netz.

Ohne Verschlüsselung laufen alle Daten zwischen Website und Shop-Datenbank lesbar durchs Netz. Die Einstellung Verschlüsselung (TLS) kennt drei Werte:

AusKeine Verschlüsselung, die Vorgabe. Passt, wenn Shop und Website auf demselben Server oder in einem geschützten Netz liegen.
Verschlüsseln und Zertifikat prüfenDie sichere Wahl. Stammt das Zertifikat des Datenbankservers nicht von einer allgemein anerkannten Stelle, tragen Sie die CA-Datei ein. Der Name im Zertifikat muss zum eingetragenen Host passen.
Verschlüsseln, Zertifikat nicht prüfenVerschlüsselt, schützt aber nicht davor, dass sich jemand als Ihr Datenbankserver ausgibt. Eine Notlösung für Server, deren Zertifikat sich nicht prüfen lässt.

Bietet der Datenbankserver kein TLS an, kommt mit eingeschalteter Verschlüsselung keine Verbindung zustande; die Erweiterung fällt dann nicht auf eine unverschlüsselte Verbindung zurück. Probieren Sie es mit Datenbankverbindung testen aus, bevor Sie speichern.

Gilt für Version 1.15.1.

English version