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> |
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.