Quand l'accès distant est utile

L'accès distant vous permet de joindre votre base MySQL depuis :

  • un environnement de développement local (XAMPP, MAMP, Docker)
  • des outils de bureau (MySQL Workbench, DBeaver, Sequel Pro)
  • d'autres serveurs ou des applications cloud
  • des scripts automatisés et des outils de sauvegarde
Note de sécurité : ouvrir MySQL à distance crée un risque de sécurité potentiel. Ne l'activez que si c'est nécessaire et utilisez toujours des mots de passe solides.

Activer l'accès distant

Étape 1 : ajouter l'hôte distant

  1. Connectez-vous à EGPNL
  2. Ouvrez DatabasesRemote MySQL
  3. Saisissez votre adresse IP ou votre nom d'hôte
  4. Cliquez sur Add Host
Trouver votre IP : ouvrez whatismyipaddress.com pour connaître votre IP publique actuelle.

Étape 2 : configurer l'utilisateur de la base

Vérifiez que votre utilisateur de base de données dispose des bons droits :

  1. Ouvrez MySQL Databases
  2. Vérifiez que votre utilisateur possède All Privileges
  3. Ou créez un utilisateur dédié à l'accès distant

Paramètres de connexion

Paramètre Valeur
Nom d'hôte L'IP de votre serveur ou yourdomain.com
Port 3306 (port MySQL par défaut)
Base de données your_database_name
Nom d'utilisateur your_database_user
Mot de passe your_database_password

Se connecter avec MySQL Workbench

  1. Ouvrez MySQL Workbench
  2. Cliquez sur + pour ajouter une connexion
  3. Donnez un nom à la connexion
  4. Renseignez l'adresse de votre serveur dans Hostname
  5. Réglez Port sur 3306
  6. Saisissez le nom d'utilisateur
  7. Cliquez sur Store in Vault pour enregistrer le mot de passe
  8. Cliquez sur Test Connection
  9. Cliquez sur OK pour enregistrer

Se connecter en ligne de commande

# Basic connection
mysql -h your-server.com -P 3306 -u username -p database_name

# Example
mysql -h server.egphp.com -P 3306 -u mysite_user -p mysite_db

Se connecter depuis PHP (application distante)

<?php
$host = 'your-server.com';  // Remote server hostname
$port = 3306;
$database = 'your_database';
$username = 'your_user';
$password = 'your_password';

// PDO Connection
try {
    $pdo = new PDO(
        "mysql:host=$host;port=$port;dbname=$database;charset=utf8mb4",
        $username,
        $password,
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    echo "Connected successfully!";
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>

Autoriser tous les hôtes (caractère générique)

Pour autoriser les connexions depuis n'importe quelle adresse IP :

  1. Ouvrez Remote MySQL dans EGPNL
  2. Saisissez % comme hôte
  3. Cliquez sur Add Host
Déconseillé : autoriser tous les hôtes (%) constitue un risque de sécurité. Réservez-le aux tests et supprimez l'entrée ensuite. Privilégiez toujours des adresses IP précises.

Tunnel SSH (la solution la plus sûre)

Pour une sécurité maximale, passez par un tunnel SSH :

Tunnel SSH en ligne de commande

# Create tunnel
ssh -L 3307:localhost:3306 user@your-server.com

# In another terminal, connect via tunnel
mysql -h 127.0.0.1 -P 3307 -u dbuser -p database_name

Tunnel SSH dans MySQL Workbench

  1. Créez une nouvelle connexion
  2. Réglez la méthode de connexion sur Standard TCP/IP over SSH
  3. Nom d'hôte SSH : your-server.com
  4. Nom d'utilisateur SSH : votre utilisateur SSH
  5. Fichier de clé SSH : votre clé privée (facultatif)
  6. Nom d'hôte MySQL : localhost (ou 127.0.0.1)
  7. Saisissez les identifiants de la base de données
Pourquoi un tunnel SSH ? Les tunnels SSH chiffrent tout le trafic et évitent d'exposer le port MySQL 3306 sur Internet.

Résolution des problèmes

Connexion refusée (Connection Refused)

  • Vérifiez que votre IP figure bien dans Remote MySQL
  • Vérifiez si votre IP a changé (IP dynamique)
  • Assurez-vous que le port 3306 est ouvert sur votre pare-feu

Accès refusé (Access Denied)

  • Vérifiez le nom d'utilisateur et le mot de passe
  • Vérifiez que l'utilisateur a les droits d'accès distant
  • Assurez-vous que le nom de la base est correct

Erreurs de délai dépassé

  • Vérifiez que ni le réseau ni le pare-feu ne bloquent le port 3306
  • Essayez plutôt un tunnel SSH
  • Vérifiez que le serveur accepte les connexions

Retirer l'accès distant

Lorsque vous n'avez plus besoin de l'accès distant :

  1. Ouvrez Remote MySQL dans EGPNL
  2. Repérez l'entrée correspondant à l'IP ou à l'hôte
  3. Cliquez sur Delete