Activer les connexions à distance MySQL

I. Présentation

Dans ce tutoriel, nous allons apprendre à activer la gestion et la connexion à distance sur des bases de données MySQL. Bien souvent, on gère nos bases de données MySQL via PhpMyAdmin, une interface web située sur notre serveur de base de données qui envoi des requêtes MySQL en local. Il peut cependant arriver pour plusieurs raisons d'avoir besoin de gérer nos bases de données à distance en lignes de commandes ou via des logiciels spécifiques comme SQLyog.

II. Test de la connexion

La connexion à la gestion MySQL en ligne de commande est par défaut possible qu'en localhost (via la commande "mysql -u user -p"). Si on souhaite activer les connexions à distance, on utilise le port 3306 (par défaut) comme indiqué dans le fichier de configuration "/etc/mysql/my.cnf" :

RemoteMySQL01

On peut, pour voir l'accès, tenter une connexion à distance sur notre MySQL. Depuis un autre serveur, on entrera la commande suivante :

mysql -u user -p -h < IP serveur Mysql >

Nous aurons alors théoriquement ce message d'erreur :

RemoteMySQL02

Si on utilise la commande "perror" qui sert à décrire les messages d'erreurs de MySQL, nous verrons ce résultat :

RemoteMySQL03

On voit donc bien que la connexion nous est impossible, avec un simple nmap, nous verrons en effet que le port MySQL (3306) n'est pas ouvert sur l'IP sur serveur MySQL.

nmap -sV < IP serveur Mysql > -p 3306

RemoteMySQL04

III. Modification de la configuration

Nous allons donc ouvrir notre service MySQL sur l'IP de notre serveur MySQL. Nous allons modifier notre fichier de configuration MySQL qui est "/etc/mysql/my.cnf". On cherchera ensuite l'option "bind-address" où l'on indiquera l'IP de notre serveur sur le réseau :

RemoteMySQL05

On doit ensuite redémarrer notre serveur MySQL :

service mysql restart

RemoteMySQL06

On peut ensuite retenter une connexion MySQL à distance en ligne de commande depuis un autre hôte

mysql -u user -p -h < IP serveur >

IV. Gestion de l'utilisation

Il est alors possible que vous ayez ce message d'erreur :

RemoteMySQL07

Cela signifie que l'utilisateur en question (ici root) n'est pas autorisé à se connecter à distance mais uniquement en localhost. Souvent cela passe par une création de l'utilisateur en "user"@"localhost". On doit donc modifier l'hôte de notre utilisateur pour soit y mettre une IP spécifique, soit y mettre tous les hôtes (IP) possibles.

On doit alors se connecter en root sur notre base de données MySQL (pas encore à distance) pour changer l'hôte de notre utilisateur avec la commande suivante :

UPDATE mysql.user SET Host = "%" WHERE user.Host = "localhost" AND user.User = "nom_user";

On met donc à jour l'hôte (Host) de notre utilisateur, "%" signifie tous les hôtes. Pour une sécurité accrue, on pourrait mettre seulement une IP à la place de "%" (ex 192.168.1.17 ou 192.168.1.0/24)

En peut ensuite retenter notre connexion MySQL à distance :

mysql -u user -p -h < IP serveur >

Notre connexion MySQL à distance est maintenant opérationnelle.

V. Sécurisation de l'accès MySQL distant

Pour augmenter la sécurité et ralentir des éventuels attaquants dans leurs démarches. Nous pouvons changer le port par défaut pour les connexion MySQL à distance. On se rend pour cela dans notre fichier de configuration "/etc/mysql/my.cnf". On doit y changer les deux valeurs suivantes :

RemoteMySQL08

RemoteMySQL09

On choisie ici une valeur de "30306". Cette valeur vous est libre mais on préférera un port au dessus de 1024 car les ports 0-1024 sont des ports réservés. De plus, lors d'une utilisation simple de nmap, celui-ci ne scan que les 1024 premiers ports, un port "30306" apparaitra donc pas dans un scan nmap simple. On redémarrera à nouveau notre service Mysql pour que les changements soient pris en compte :

service mysql restart

On pourra ensuite renouveler notre test de connexion Mysql à distance en y ajoutant l'option "-P" pour y préciser le port :

mysql -u user -p -P 30306
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

    mickael has 502 posts and counting.See all posts by mickael

    5 pensées sur “Activer les connexions à distance MySQL

    • salut j’aimerais que vous m’aider à me connecter ma base de donnée mysql server 5.6 .j’ai deux pc relier par retour/switch/hub en réseau local le premier pc contiens le sql server le deuxième pc contiens l’application VB pour accéder au donnée comment je peu résoudre ce problème merci.

      Répondre
      • Bjr abouelmahassin
        Tu as pu trouver la solution a ton probléme?
        Si oui alors partage stp.
        Je suis dans le besoin
        Merci

        Répondre
    • Bonjour

      est il possible de mettre un nom de machine ? plutôt q’une ip , car le poste client n’a pas d’ip fixe
      j’ai essayer cela ne fonctionne pas mais il y a peut être quelque chose de plus à modifier .

      Merci

      Répondre
    • Bonjour

      merci pour cet article qui m’a permis de vérifier les paramètres du serveur MySQL
      mais il a fallu pour ça fonctionne je fasse en plus les deux lignes suivante :

      grant all on *.* to root@’%’ identified by « lepassword »;
      flush privileges;

      si j’ai bien compris c’est pour ouvrir les droits d’accès depuis un ordinateur distant
      si ça peut servir à quelqu’un

      Répondre
      • Merci pour cette info qui m’a permis de débloquer mon cas.

        Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

     

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.