Websites
Verbindung zu Ihrer Datenbank über einen SSH-Tunnel
Your site's MySQL server only listens on the server's own loopback address, so a desktop tool such as TablePlus, Sequel Ace, DBeaver or MySQL Workbench cannot dial it directly. An SSH tunnel gives…
Ihre Website's MySQL-Server lauscht nur auf der Loopback-Adresse des Servers selbst, daher können Desktop-Tools wie TablePlus, Sequel Ace, DBeaver oder MySQL Workbench nicht direkt darauf zugreifen. Ein SSH-Tunnel gibt diesen Tools einen lokalen Port, der zur Datenbank weitergeleitet wird. So erhalten Sie eine echte GUI für Ihre Daten, ohne MySQL für das Internet zu öffnen.
Warum ein Tunnel erforderlich ist
Öffnen Sie Websites, klicken Sie auf die Website, dann Dateien, dann Datenbank. Die Karte Verbindungsdetails zeigt den Host als 127.0.0.1 und den Port als 3306. Das ist kein Platzhalter: die Datenbank akzeptiert wirklich nur Verbindungen von dem Gerät, auf dem sie läuft. Nichts im öffentlichen Internet kann Port 3306 erreichen, was eine ganze Klasse von Angriffen eliminiert.
Ein SSH-Tunnel schließt diese Lücke sicher. Ihr SSH-Client öffnet einen Port auf Ihrem Laptop, verschlüsselt alles, was Sie dorthin senden, und reicht es von innen auf dem Server an die Datenbank weiter, genau so, als hätte sich ein lokaler Prozess verbunden.

Was Sie zuerst brauchen
Ein Tunnel ist eine SSH-Verbindung, daher benötigen Sie einen SSH-Schlüssel, der gegen die Website registriert ist, bevor etwas davon funktioniert. Folgen Sie zunächst SSH-Schlüssel zu einer Website hinzufügen, und kehren Sie dann hierher zurück.
Sammeln Sie vier Dinge:
- SSH-Host, Port und Benutzername, aus Dateien, dann SSH-Schlüssel, in der Karte Verbindungsdetails.
- Datenbankname, Benutzername und Passwort, aus Dateien, dann Datenbank. Klicken Sie auf das Augensymbol, um das Passwort anzuzeigen, und auf das Kopiersymbol, um es in die Zwischenablage zu kopieren.
Falls der Reiter Datenbank sagt Keine Datenbank für diesen Website-Typ bereitgestellt, hat diese Website keine. Statische Websites und einige Node.js-Websites werden ohne Datenbank erstellt.
Den Tunnel von einem Terminal öffnen
Die allgemeine Form ist: Leiten Sie einen lokalen Port zu 127.0.0.1:3306 auf der anderen Seite der SSH-Verbindung weiter.
ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
-L 3307:127.0.0.1:3306öffnet Port 3307 auf Ihrem Gerät und leitet ihn zum Port 3306 auf der Loopback-Schnittstelle des Servers weiter.-Nbedeutet, keine Shell auszuführen, sondern den Tunnel offen zu halten.- Fügen Sie
-i /path/to/keyhinzu, wenn der Schlüssel für diese Website nicht Ihr Standardschlüssel ist.
Lassen Sie dieses Terminal-Fenster laufen. Solange es offen ist, ist 127.0.0.1:3307 auf Ihrem Laptop die Datenbank der Website.
Verwenden Sie lokal 3307 anstelle von 3306. Falls Sie MySQL oder MariaDB auf Ihrem eigenen Gerät installiert haben, nutzt es bereits 3306, und der Tunnel schlägt fehl mit einer Fehlermeldung "address already in use" (Adresse bereits in Verwendung). Jeder freie lokale Port funktioniert.
Ihren Datenbank-Client zum Tunnel verbinden
Erstellen Sie in Ihrem GUI-Client eine einfache MySQL-Verbindung mit diesen Werten:
| Feld | Wert |
|---|---|
| Host | 127.0.0.1 |
| Port | 3307 (welcher lokale Port auch immer Sie weitergeleitet haben) |
| Benutzer | Der Benutzername aus dem Reiter Datenbank |
| Passwort | Das Passwort aus dem Reiter Datenbank |
| Datenbank | Der Datenbankname aus dem Reiter Datenbank |
Geben Sie nicht den SSH-Host in das Feld Host ein. Soweit der Client betroffen ist, spricht er mit einer Datenbank auf Ihrem eigenen Gerät.
Clients mit integriertem SSH-Reiter
TablePlus, Sequel Ace, DBeaver und MySQL Workbench können den Tunnel alle selbst verwalten, was das Offenhalten eines Terminals erspart. Füllen Sie zwei Gruppen von Feldern aus:
- SSH-Bereich: Host, Port, Benutzername und Datei des privaten Schlüssels von der Seite SSH-Schlüssel.
- Datenbank-Bereich: Host
127.0.0.1, Port3306, plus Datenbankname, Benutzer und Passwort aus dem Reiter Datenbank.
Wenn der Client den Tunnel erstellt, verwenden Sie 3306 im Datenbank-Bereich anstelle Ihres lokalen Weiterleitungsports. Der Client verbindet sich vom Standpunkt des Servers aus, also sieht er den echten Port.
phpMyAdmin verwenden stattdessen
Falls Sie nur einen schnellen Blick auf eine Tabelle brauchen, benötigen Sie überhaupt keinen Tunnel. Der Reiter Datenbank hat eine Karte phpMyAdmin mit einer Schaltfläche phpMyAdmin öffnen. Sie meldet Sie über KPanel an, daher gibt es kein separates Passwort zum Merken, und es wird in einem neuen Reiter geöffnet, der bereits auf die Datenbank dieser Website verweist.
phpMyAdmin ist die schnellere Option zum Durchsuchen, Ausführen einer einmaligen Abfrage oder Überprüfung eines Wertes. Ein Desktop-Client über einen Tunnel ist besser für große Exporte, Schema-Arbeit und alles, das Sie skripten möchten. Siehe phpMyAdmin verwenden für die Browserroute.
Abfragen und Dumps durch den Tunnel ausführen
Mit geöffnetem Tunnel funktionieren die Standard-Befehlszeilen-Tools normal, verweisen auf Ihren lokalen Weiterleitungsport:
mysql -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name>
mysqldump -h 127.0.0.1 -P 3307 -u <db-user> -p <db-name> > backup.sql
Ein manuelles Dump ist eine Kopie zur Bequemlichkeit, keine Backup-Strategie. Es ist nur so aktuell wie der Moment, in dem Sie es ausgeführt haben, und es lebt auf dem Laptop, auf dem Sie es ausgeführt haben. Kapsule erstellt bereits automatische tägliche Backups der Website, die 30 Tage lang aufbewahrt werden. Siehe Ein Backup erstellen, bevor Sie sich auf eine lokale .sql-Datei verlassen.
Fehlerbehebung
"Address already in use" beim Öffnen des Tunnels. Etwas auf Ihrem Gerät befindet sich bereits auf diesem lokalen Port. Wählen Sie einen anderen, zum Beispiel -L 3399:127.0.0.1:3306, und ändern Sie den Port in Ihrem Client entsprechend.
"Connection refused" vom Datenbank-Client. Der Tunnel ist nicht aktiv. Überprüfen Sie, ob das SSH-Terminal noch läuft und keinen Fehler gedruckt hat, und dass der Port in Ihrem Client dem lokalen Port im -L-Argument entspricht.
SSH verbindet sich, aber der Client wird immer noch ein Timeout. Bestätigen Sie, dass Sie zu 127.0.0.1:3306 weitergeleitet haben und nicht zum öffentlichen Hostnamen. Die Weiterleitung zum öffentlichen Namen fordert den Server auf, die Datenbank über das Internet zu erreichen, was genau das ist, das blockiert wird.
"Access denied for user". Der SSH-Login war erfolgreich, aber die MySQL-Anmeldedaten sind falsch. Kopieren Sie den Benutzernamen und das Passwort erneut aus dem Reiter Datenbank mithilfe der Kopiersymbole, anstatt sie neu einzugeben, und überprüfen Sie, dass Sie sich mit dem richtigen Datenbanknamen verbinden.
Permission denied (publickey) bevor Sie auch nur MySQL erreichen. Das ist die SSH-Ebene, nicht die Datenbank. Arbeiten Sie sich durch den Abschnitt Fehlerbehebung in SSH-Schlüssel zu einer Website hinzufügen.
Nächste Schritte
- Dateien mit SFTP hochladen verwendet die gleichen SSH-Anmeldedaten für Dateiübertragung.
- phpMyAdmin verwenden für browsergestützte Datenbankarbeit.
- Aus einem Backup wiederherstellen, falls eine Abfrage weiter gegangen ist als beabsichtigt.