Aller au contenu
Sommaire
Sites web

Connexion à votre base de données via un tunnel SSH

Traduction automatique. L'original en anglais est disponible si besoin.

Le fait que la base de données de votre site n'écoute que sur l'adresse de bouclage du serveur empêche un outil de bureau tel que TablePlus, Sequel Ace, DBeaver ou MySQL Workbench de s'y connecter directement. Un tunnel SSH donne à ces outils un port local qui est redirigé vers la base de données, ce qui vous permet d'obtenir une interface graphique correcte sur vos données sans exposer MySQL à internet.

Pourquoi un Tunnel Est Nécessaire

Ouvrez Sites web, cliquez sur le site, puis sur Base de données. La carte Détails de connexion affiche l'hôte sous la forme 127.0.0.1 et le port sous la forme 3306. Ce n'est pas un espace réservé : la base de données n'accepte en réalité des connexions que depuis la machine sur laquelle elle s'exécute. Rien sur l'internet public ne peut atteindre le port 3306, ce qui élimine toute une catégorie d'attaques.

Un tunnel SSH comble cet écart en toute sécurité. Votre client SSH ouvre un port sur votre ordinateur portable, chiffre tout ce que vous lui envoyez, et le transmet à la base de données depuis l'intérieur du serveur, exactement comme si un processus local s'était connecté.

Onglet Database montrant les détails de connexion dans KPanel

Ce Dont Vous Avez Besoin D'abord

Un tunnel est une connexion SSH, vous avez donc besoin d'une clé SSH enregistrée pour ce site avant que tout ceci ne fonctionne. Suivez d'abord Ajouter des Clés SSH à un Site, puis revenez ici.

Rassemblez quatre éléments :

  • L'hôte SSH, le port et le nom d'utilisateur, depuis Paramètres, puis Clés SSH, dans la carte Détails de connexion.
  • Le nom de la base de données, le nom d'utilisateur et le mot de passe, depuis Base de données. Cliquez sur l'icône en forme d'œil pour révéler le mot de passe et sur l'icône de copie pour le mettre dans votre presse-papiers.

Si l'onglet Database indique No database provisioned for this site type, ce site n'en a pas. Les sites statiques et certains sites Node.js sont créés sans base de données.

Ouvrir le Tunnel Depuis un Terminal

Le principe général est le suivant : rediriger un port local vers 127.0.0.1:3306 de l'autre côté de la connexion SSH.

ssh -N -L 3307:127.0.0.1:3306 <ssh-username>@<ssh-host> -p <ssh-port>
  • -L 3307:127.0.0.1:3306 ouvre le port 3307 sur votre machine et le redirige vers le port 3306 de l'interface de bouclage du serveur.
  • -N signifie de ne pas lancer de shell, simplement de maintenir le tunnel ouvert.
  • Ajoutez -i /path/to/key si la clé de ce site n'est pas votre clé par défaut.

Laissez cette fenêtre de terminal ouverte. Tant qu'elle est ouverte, 127.0.0.1:3307 sur votre ordinateur portable représente la base de données du site.

Utilisez 3307 en local plutôt que 3306. Si MySQL ou MariaDB est installé sur votre propre machine, il utilise déjà le port 3306, et le tunnel échouera à se lier avec une erreur « address already in use ». N'importe quel port local libre fonctionne.

Pointer Votre Client de Base de Données Vers le Tunnel

Dans votre client graphique, créez une connexion MySQL simple avec ces valeurs :

ChampValeur
Hôte127.0.0.1
Port3307 (le port local que vous avez redirigé)
UtilisateurLe Username indiqué dans l'onglet Database
Mot de passeLe Password indiqué dans l'onglet Database
Base de donnéesLe nom Base de données indiqué dans l'onglet Database

Ne mettez pas l'hôte SSH dans le champ Hôte. Du point de vue du client, il communique avec une base de données sur votre propre machine.

Clients Avec un Onglet SSH Intégré

TablePlus, Sequel Ace, DBeaver et MySQL Workbench peuvent tous gérer le tunnel eux-mêmes, ce qui évite de garder un terminal ouvert. Remplissez deux groupes de champs :

  • Section SSH : hôte, port, nom d'utilisateur et fichier de clé privée depuis la page Clés SSH.
  • Section Database : hôte 127.0.0.1, port 3306, plus le nom de la base de données, l'utilisateur et le mot de passe depuis l'onglet Database.

Lorsque le client établit le tunnel, utilisez 3306 dans la section Database plutôt que votre port local redirigé. Le client se connecte du point de vue du serveur, il voit donc le port réel.

Utiliser phpMyAdmin à la Place

Si vous avez seulement besoin d'un coup d'œil rapide sur une table, vous n'avez pas besoin d'un tunnel du tout. L'onglet Database comporte une carte phpMyAdmin avec un bouton Ouvrir phpMyAdmin. Il vous connecte via KPanel, il n'y a donc pas de mot de passe séparé à retenir, et il s'ouvre dans un nouvel onglet déjà pointé vers la base de données de ce site.

phpMyAdmin est l'option la plus rapide pour parcourir des données, exécuter une requête ponctuelle ou vérifier une valeur. Un client de bureau via un tunnel est préférable pour les exports volumineux, le travail sur le schéma et tout ce que vous souhaitez scripter. Consultez Utiliser phpMyAdmin pour la méthode par navigateur.

Exécuter des Requêtes et des Exports Via le Tunnel

Une fois le tunnel ouvert, les outils en ligne de commande standards fonctionnent normalement, pointés vers votre port local redirigé :

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

Un export manuel est une copie de confort, pas une stratégie de sauvegarde. Il n'est à jour qu'au moment où vous l'avez exécuté, et il réside sur l'ordinateur portable depuis lequel vous l'avez lancé. KapsuleHost effectue déjà des sauvegardes quotidiennes automatiques du site, conservées pendant 30 jours. Consultez Effectuer une Sauvegarde avant de vous fier à un fichier .sql local.

Dépannage

« Address already in use » lors de l'ouverture du tunnel. Quelque chose sur votre machine occupe déjà ce port local. Choisissez-en un autre, par exemple -L 3399:127.0.0.1:3306, et modifiez le port dans votre client en conséquence.

« Connection refused » depuis le client de base de données. Le tunnel n'est pas actif. Vérifiez que le terminal SSH fonctionne toujours et n'a pas affiché d'erreur, et que le port dans votre client correspond au port local de l'argument -L.

SSH se connecte mais le client atteint quand même le délai d'attente. Vérifiez que vous avez bien redirigé vers 127.0.0.1:3306 et non vers le nom d'hôte public. Rediriger vers le nom public demande au serveur d'atteindre la base de données via internet, ce qui est précisément ce qui est bloqué.

« Access denied for user ». La connexion SSH a réussi mais les identifiants MySQL sont incorrects. Copiez à nouveau le nom d'utilisateur et le mot de passe depuis l'onglet Database à l'aide des icônes de copie plutôt que de les retaper, et vérifiez que vous vous connectez au bon nom de base de données.

Permission denied (publickey) avant même d'atteindre MySQL. Cela relève de la couche SSH, pas de la base de données. Parcourez la section de dépannage dans Ajouter des Clés SSH à un Site.

Et Ensuite

Cet article vous a-t-il aidé ?

Vous êtes une IA ? Lisez cette page en Markdown

Articles connexes

Connexion via SFTP : FileZilla, Cyberduck et ligne de commandeSFTP (Secure File Transfer Protocol) vous donne un accès direct aux fichiers de votre site sur le serveur.…Certificats SSL et HTTPSCet article explique ce qu'est le SSL en termes simples, comment KapsuleHost gère automatiquement le SSL pour vos sites, et que faire en cas de problème avec…Sites web : par où commencerComment fonctionne l'hébergement de sites web chez KapsuleHost, ce qui se trouve sur chaque onglet d'un site, et quel guide lire selon la tâche qui vous occupe.…Surveillance de la disponibilité du siteChaque site hébergé chez KapsuleHost est vérifié automatiquement toutes les 60 secondes, et l'onglet Disponibilité vous montre le résultat : statut actuel,…

Toujours bloqué ?

Demandez à Kora, qui connaît votre compte, ou contactez notre équipe.

Nous contacterContacter le support