Activer les connexions à distance MySQL
Sommaire
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" :
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 :
Si on utilise la commande "perror" qui sert à décrire les messages d'erreurs de MySQL, nous verrons ce résultat :
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
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 :
On doit ensuite redémarrer notre serveur MySQL :
service mysql restart
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 :
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 :
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
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.
Bjr abouelmahassin
Tu as pu trouver la solution a ton probléme?
Si oui alors partage stp.
Je suis dans le besoin
Merci
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
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
Merci pour cette info qui m’a permis de débloquer mon cas.