# 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

<div class="callout warning" id="bkmrk-verwenden-sie-nicht-">**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.

</div>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.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;
```

<div class="callout info" id="bkmrk-ab-version-1.12.0-st">**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.

</div>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“

<table id="bkmrk-datenbank-hostadress"> <tbody> <tr><td>**Datenbank-Host**</td><td>Adresse des Datenbankservers. Liegt der Shop auf demselben Server, meist `localhost`.</td></tr> <tr><td>**Datenbankname**</td><td>Name des Schemas, etwa `jtlshop`.</td></tr> <tr><td>**Datenbank-Benutzer**</td><td>Der eben angelegte Lesebenutzer.</td></tr> <tr><td>**Datenbank-Passwort**</td><td>Wird im Formular verdeckt angezeigt. Zur Speicherung siehe unten.</td></tr> <tr><td>**Tabellen-Präfix**</td><td>Vorgabe `t`.</td></tr> <tr><td>**Datenbank-Port**</td><td>Vorgabe `3306`.</td></tr> </tbody></table>

### 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 acht Tabellen fehlt, ohne die eine Anbindung sinnlos wäre.

![Der Reiter JTL Shop Datenbank mit der Schaltfläche Datenbankverbindung testen und der Rückmeldung: Verbindung erfolgreich, Datenbank jtlshop_demo (MySQL 8.4.3), 8 Tabellen gefunden](https://docs.graup-it.de/uploads/images/gallery/2026-08/doku-02-verbindungspruefung.png)

Werden fehlende Tabellen gemeldet, stimmt in aller Regel das Präfix nicht.

<div class="callout info" id="bkmrk-die-pr%C3%BCfung-ist-nur-">Die Prüfung ist nur für angemeldete Benutzer mit dem Recht, Erweiterungen zu verwalten, erreichbar. Bis Version 1.9.8 war sie ohne Anmeldung aufrufbar — **ein weiterer Grund, auf 1.10.0 zu aktualisieren**.

</div>## Reiter „Plugin-Optionen“

<table id="bkmrk-shop-basis-urladress"> <tbody> <tr><td>**Shop Basis-URL**</td><td>Adresse 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.</td></tr> <tr><td>**Standard-Währung**</td><td>Währungskürzel für die Preisausgabe, Vorgabe `EUR`.</td></tr> <tr><td>**Standardsprache**</td><td>ISO-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`.</td></tr> <tr><td>**Kundengruppe**</td><td>Aus 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*.</td></tr> </tbody></table>

![Der Reiter Plugin-Optionen mit den Feldern Shop Basis-URL, Standard-Währung und Standardsprache](https://docs.graup-it.de/uploads/images/gallery/2026-08/zXkdoku-03-plugin-optionen.png)

## Wo das Passwort landet

<div class="callout warning" id="bkmrk-joomla-speichert-plu">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.

</div>## 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.
- Wenn möglich, die Verbindung über ein VPN oder einen SSH-Tunnel führen statt über das offene Netz.

<small>Gilt für Version 1.12.1.</small>

[English version](https://docs.graup-it.de/link/182)