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 |
[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) |
[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)
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 |
# 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) |
[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> |
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.