# 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.tartikelattribut      TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelattributsprache TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelmerkmal       TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelpict          TO 'joomla_lesen'@'203.0.113.10';
GRANT SELECT ON jtlshop.tartikelvariante      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';
FLUSH PRIVILEGES;
```

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> </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/doku-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.10.4.</small>