Skip to main content
SQLOZ
Chapter 2 Core & Getting Started

Chapitre 2 : Connexions et Tunnels

Info : Ce chapitre traite de l’établissement de connexions directes aux bases de données, de la configuration des tunnels SSH Jump Host et HTTP PHP, des balises de couleur d’environnement et du stockage sécurisé des identifiants.

Dans ce chapitre :

2.1 Établir une connexion directe

Suivez ces étapes pour vous connecter à une base de données hébergée sur une machine locale ou sur un serveur accessible via Internet.

  1. Appuyez sur Cmd + N ou utilisez le menu Fichier → Nouvelle connexion….
  2. Dans l’onglet Général, renseignez les champs suivants :
    • Nom de la connexion : Un nom descriptif (ex. Prod E-Commerce Principal).
    • Moteur : Sélectionnez MySQL, PostgreSQL ou SQLite local. MariaDB utilise la famille de profils MySQL et est détecté après la connexion ; il n’apparaît pas comme élément distinct. MySQL 8.0/8.4, MariaDB 10.6/11.4 et PostgreSQL 16 constituent la matrice testée actuelle, non des prérequis minimaux. Voir Chapitre 22.
    • Hôte et Port : L’adresse du serveur et le port (MySQL par défaut 3306, PostgreSQL 5432).
    • Utilisateur et Mot de passe : Le nom d’utilisateur et le mot de passe.
  3. Vérifiez la connexion avec Tester la connexion. Dès confirmation du succès, connectez-vous avec Enregistrer et connecter.

2.2 Profils de connexion et environnements sécurisés

Les profils de connexion enregistrés conservent les paramètres non sensibles tels que le nom, le moteur, l’hôte, le port, la base de données, la couleur d’environnement et la préférence lecture seule. Les mots de passe et les secrets de tunnel sont stockés dans le trousseau d’accès macOS (Keychain).

  • Utilisez Enregistrer et connecter pour un profil réutilisable.
  • Utilisez l’option de connexion temporaire de session lorsque le profil ne doit pas être conservé.
  • Attribuez des couleurs Prod, Staging, Dev, Test ou Sandbox afin que l’espace de travail et l’explorateur d’objets indiquent clairement l’environnement cible.
  • Activez le mode Lecture seule du profil avant d’inspecter une base de production. L’éditeur et la grille de données refuseront alors toute opération modifiant les données.

2.3 Tunnel SSH Jump Host

Dans de nombreux environnements d’entreprise, le serveur de base de données n’est pas exposé directement au réseau externe ; on y accède uniquement via un serveur relais / bastion (Jump Host). SQLOZ intègre un tunnel SSH natif pour cette configuration.

[SQLOZ] --(Tunnel SSH / Port 22)--> [SSH Jump Host] --(Réseau local)--> [Serveur de base de données]

Étapes de configuration :

  1. Dans la boîte de dialogue de connexion, basculez vers l’onglet Tunnel SSH.
  2. Cochez Activer le tunnel SSH.
  3. Saisissez l’adresse du serveur SSH (Hôte SSH), le port (22 par défaut) et le nom d’utilisateur.
  4. Choisissez l’une des méthodes d’authentification (Méthode d’authentification) :
    • Clé privée (recommandé) : Sélectionnez le fichier ~/.ssh/id_ed25519 ou id_rsa ; indiquez la phrase de passe si nécessaire.
    • Mot de passe : Le mot de passe SSH.
  5. Validez le tunnel avec Tester la connexion. SQLOZ établit le tunnel en arrière-plan et lance la session de base de données.

Astuce : L’authentification par clé privée est recommandée par rapport au mot de passe car elle est plus sécurisée et facilement automatisable.

2.4 Tunnel HTTP PHP (sqloz-tunnel.php)

Sur les hébergements mutualisés (cPanel/DirectAdmin), le port 3306 est généralement fermé vers l’extérieur et l’accès SSH n’est pas fourni. La base de données n’est alors accessible que par PHP sur le serveur web. SQLOZ fournit un tunnel HTTP utilisant le script sqloz-tunnel.php.

[SQLOZ] --(HTTPS POST / Chiffrement par jeton)--> [sqloz-tunnel.php] --(localhost:3306)--> [Serveur MySQL]

Étapes d’installation :

  1. Déposez le fichier sqloz-tunnel.php fourni dans le paquet d’installation SQLOZ dans le répertoire racine web de votre hébergement (ex. public_html/).
  2. Modifiez la ligne $TOKEN = "votre_cle_secrete"; dans le script avec une clé complexe. Par sécurité, le script refuse de s’exécuter et renvoie une erreur HTTP 500 tant que le jeton par défaut n’est pas changé.
  3. Dans la configuration SQLOZ, cochez l’onglet Tunnel HTTP :
    • URL du tunnel : https://example.com/sqloz-tunnel.php
    • Secret partagé (Shared Secret) : Le jeton secret défini dans le script.
  4. Validez avec Tester la connexion.

Transmission des identifiants de base de données

Important : L’identifiant et le mot de passe de la base de données ne sont jamais inscrits dans le fichier sqloz-tunnel.php. Seul le SQTUNNEL_TOKEN (secret partagé) est défini dans le script.

Le script PHP n’exécute pas de pilote de base de données et ne voit jamais le mot de passe en clair. Son rôle est uniquement de relayer les octets binaires bruts (proxy TCP brut) :

  1. Le pilote local SQLOZ lit le paquet d’accueil (Server Greeting) émis par le serveur via le tunnel.
  2. Le pilote chiffre le nom d’utilisateur et le mot de passe saisis selon le protocole binaire standard de la base (Client Authentication Packet).
  3. Le paquet binaire préparé est encodé en base64 et transmis au script via une connexion sécurisée HTTPS.
  4. Le script décode le paquet et injecte directement les octets bruts dans le socket TCP du serveur de base de données. Le serveur authentifie la session.

Variables d’environnement de configuration

Le script sqloz-tunnel.php peut être configuré dans le fichier PHP lui-même ou via des variables d’environnement au niveau du serveur web.

Variable d’environnementDescriptionValeur par défaut
SQTUNNEL_HOSTAdresse cible du serveur MySQL127.0.0.1
SQTUNNEL_PORTPort cible du serveur MySQL3306
SQTUNNEL_TOKENClé d’accès secrète transmise par le clientObligatoire
SQTUNNEL_MAX_SESSIONSSessions actives simultanées maximales16
SQTUNNEL_IDLE_TIMEOUTDélai d’arrêt des processus inactifs (sec)3600
SQTUNNEL_LOCKOUT_THRESHOLDSeuil de verrouillage d’IP en cas d’échec (protection brute-force)5
SQTUNNEL_LOCKOUT_WINDOWFenêtre de temps de blocage brute-force (sec)60

2.5 Balises de couleur d’environnement

Lorsque de nombreux onglets de connexion sont ouverts simultanément, le risque d’exécuter une requête destructive sur le mauvais environnement (ex. production) est élevé. SQLOZ prévient ce risque grâce aux étiquettes visuelles de couleur.

Attribuez une couleur à chaque profil dans l’onglet Général :

  • Prod (Rouge - #E8334A) : Serveurs de production en direct.
  • Staging (Orange - #FF9500) : Environnements de pré-production et de test.
  • Dev (Vert - #34C759) : Environnement de développement local.
  • Test (Bleu - #007AFF) et Sandbox (Violet - #AF52DE) : Environnements de bac à sable isolés.
  • Couleur personnalisée : Définissez une teinte spécifique avec le sélecteur Apple ou une valeur hexadécimale.

2.6 Stockage sécurisé des identifiants

SQLOZ ne stocke jamais les mots de passe de base de données et de tunnel SSH dans des fichiers texte, des configurations locales ou des journaux. Tous les identifiants sensibles sont confiés au coffre chiffré matériel Trousseau d’accès macOS (Keychain).

Astuce : La conservation des mots de passe exclusivement dans le Trousseau macOS empêche l’accès aux identifiants par d’autres applications ou appareils non autorisés.

Configuration de connexion directe - Onglet Général

Configuration du tunnel SSH

Paramètres de chiffrement SSL / TLS

Configuration du tunnel HTTP PHP

Sujets connexes