Accéder à un serveur MYSQL sur le réseau

Lorsque vous installez un serveur MYSQL (ou un serveur LAMP avec tasksel), celui ci est paramétré par défaut pour n’autoriser que les connexions provenant de localhost, pour des raisons de sécurité.

[root@halter]:# telnet 10.0.0.134 3306
Trying 10.0.0.134...
telnet: Unable to connect to remote host: Connection refused

Si on effectue un scan de port sur l’ordinateur hébergeant le serveur Mysql, on voit bien que le port par défaut de Mysql, le 3306, n’apparait pas. Il est donc impossible de se connecter à se serveur depuis un autre ordinateur du réseau.

[root@halter]:# nmap 10.0.0.134</code>
 
Starting Nmap 4.76 ( http://nmap.org ) at 2010-04-04 15:15 CEST
Interesting ports on vdomaine.com (10.0.0.134):
Not shown: 996 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
2000/tcp open  callbook
MAC Address: 00:1E:2A:B4:CA:xx (Netgear)

Pour indiquer au serveur qu’il doit autoriser les connexions provenant d’autres ordinateurs du réseau, il faut modifier le fichier de configuration de Mysql, le fichier /etc/mysql/my.cnf et modifier 2 lignes:

La première, dé-commentée par défaut, indique au serveur d’ignorer les requêtes extérieures. Il faut donc la commenter (ou la supprimer)

#skip-external-locking

La seconde indique au serveur sur quelle adresse il faut écouter les requètes. Par défaut, il s’agit de 127.0.0.1. Si vous voulez autoriser le réseau local, n’indiquez pas une adresse réseau mais bien l’adresse du serveur sur le réseau. D’où l’intérêt d’avoir des réglages IP fixes ou des baux permanents attribués par le DHCP. Dans le cas contraire, je vous promet des heures de recherche infructueuses avant de revenir dessus.

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 10.0.0.134

Une fois le serveur Mysql relancé, un nouveau scan montre l’ouverture effective pour Mysql:

[root@halter]:# nmap 10.0.0.134</code>
 
Starting Nmap 4.76 ( http://nmap.org ) at 2010-04-04 15:16 CEST
Interesting ports on vdomaine.com (10.0.0.134):
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
443/tcp  open  https
2000/tcp open  callbook
3306/tcp open  mysql
MAC Address: 00:1E:2A:B4:CA:xx (Netgear)

A partir de ce moment, une connexion au serveur a déjà beaucoup plus de chances de réussir:

manu@halter:~$ mysql -p -h 10.0.0.134 -u othtest -P 3306
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 5.1.41-3ubuntu11 (Ubuntu)
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql&gt;

Ce n’est pas une astuce extraordinaire, mais maintenant que j’en ai fait un article, je suis sûr de m’en souvenir et de ne plus perdre une matinée à trouver le problème lorsque je rechangerais mon adressage… Alors, j’imagine que ça sera utile pour d’autres que moi.