Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > Accès distant à un serveur Mysql (Remote access)

Accès distant à un serveur Mysql (Remote access)

Il peut arriver pour certains projets d’avoir besoin d’un accès en écriture sur un serveur mysql à distance.

Modifier la configuration du serveur Mysql

  1. sudo nano /etc/mysql/my.cnf

Et vérifier que ces lignes soient présentes ou commentées :

  1. # Mettre ici l'adresse IP de votre serveur
  2. bind-address = XXX.XXX.XXX.XXX
  3. # Cette ligne doit être commentée ou inexistante
  4. # skip-networking

Télécharger

Puis redémarrer le serveur :

  1. sudo /etc/init.d/mysql restart

Créer l’utilisateurs SQL dans phpmyadmin

Dans phpmyadmin, cliquer sur "Privilèges", qui mènera vers la page des autorisations d’accès au serveur.

Cliquez ensuite sur "Ajouter un utilisateur" qui mènera vers un formulaire pour ajouter une autorisation et remplissez comme suit en modifiant les valeurs qui vous intéressent :

  • Ajouter un utilisateur : nom du nouvel utilisateur, il peut être le même qu’un autre utilisateur déjà existant (root par exemple). Ici nous mettrons "remote-user"
  • Serveur : Correspond à l’adresse d’où l’utilisateur peut se connecter. Si c’est le cas d’une connexion d’IP fixe au serveur, on y mettra l’ip du serveur qui souhaite se connecter. Si la connexion est t souhaitée depuis plusieurs IP ou d’une IP non fixe, il faut autoriser toute connexion en mettant "%". Ici, nous mettrons %.
  • Mot de passe : le mot de passe de l’utilisateur en question

Ensuite vous pouvez régler les privilèges de cet utilisateur pour le serveur en entier. Il est également possible de régler les privilèges table par table en ne donnant pas de droit sur le serveur et en réglant les privilèges dans chaque table.

Ouverture des ports du firewall

Il est ensuite nécessaire de pouvoir accéder au serveur mysql à travers le firewall. Le port par défaut du serveur est 3306.

Si vous utilisez iptables, il suffit de tapper :

  1. sudo /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

Cette commande ouvrira le port 3306 depuis toutes les machines.

Il est aussi possible de limiter à une adresse IP particulière de la sorte :

  1. /sbin/iptables -A INPUT -i eth0 -s XXX.XXX.XXX.XXX -p tcp --destination-port 3306 -j ACCEPT

Cette commande autorise alors la connection uniquement depuis l’adresse XXX.XXX.XXX.XXX

Si vous utilisez shorewall, il faut modifier sa configuration de la sorte :

  1. sudo nano /etc/shorewall/rulesl

en ajoutant la ligne :

  1. ACCEPT:info net fw tcp 3306

Il est nécessaire ensuite de redémarrer shorewall :

  1. sudo /etc/init.d/shorewall restart

Test de connexion

Pour tester la connexion, dans un terminal de la machine cliente, on essayera la commande :

  1. mysql -h XXX.XXX.XXX.XXX -u remote-user -p

Il est à noter que XXX.XXX.XXX.XXX correspond ici à l’adresse ou au nom d’hôte sur lequel nous souhaitons nous connecter.

Vous devriez tomber sur l’application Mysql en ligne de commande sur le serveur distant.

Aller plus loin

  • Auteur :
  • Publié le :
  • Mis à jour : 09/01/11

3 commentaires


Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.