315 votes

Comment lier le serveur MySQL à plus d'une adresse IP ?

Existe-t-il un moyen secret de lier MySQL à plus d'une adresse IP ?

D'après ce que je peux voir, le adresse de liaison dans le fichier my.cnf ne prend pas en charge plus d'une IP et vous ne pouvez pas l'avoir plus d'une fois.

2 votes

Comme indiqué dans La réponse de Tadej mais c'est devenu possible entre-temps, depuis la version 8.0.13. Voir aussi " L'option -bind-address prend désormais en charge les adresses multiples. ". Cependant, elle n'est pas encore aussi flexible que dans PostgreSQL, et n'est toujours pas supportée dans MariaDB v. 10.

305voto

Christian Lescuyer Points 3016

Non, il n'y en a pas (je viens de vérifier il y a une heure). Vous pouvez commenter l'adresse de la bind dans my.cnf :

Note : " Il y a 1 heure " est maintenant plus que 10 ans.

#skip-networking
#bind-address                   = 127.0.0.1

Si vous ne voulez que 2 IP, vous devrez alors utiliser un pare-feu.

Pour MySql version 8.0.13 et supérieure vous pouvez spécifier une liste d'adresses IP séparées par des virgules.

bind-address = 10.0.0.1,10.0.1.1,10.0.2.1

Documentation MySql pertinente .

N'oubliez pas de redémarrer votre instance MySQL après avoir modifié le fichier de configuration.

36 votes

Correct. La liaison est limitée soit à 0, 1, ou tous Les adresses IP sur le serveur.

8 votes

Notez, cependant, que vous pouvez publier et servir à la fois un socket unix local et un socket réseau en spécifiant à la fois l'option socket y bind-address options.

5 votes

Toujours vrai à ce jour.

81voto

ICR Points 6960

La liaison à 127.0.0.x ne le rendra pas disponible à tous les périphériques, mais seulement localement. Si vous souhaitez le rendre disponible à toutes les interfaces, vous devez utiliser 0.0.0.0. Si vous souhaitez y accéder à partir de plus d'une, mais pas de toutes les interfaces, vous devez vous lier à 0.0.0.0 et désactiver le pare-feu des interfaces par lesquelles vous ne souhaitez pas être accédé.

En outre, comme deuxième couche de sécurité, vous devez vous assurer que tous vos utilisateurs de MySQL ont un champ host défini sur autre chose que % (c'est-à-dire n'importe quel hôte).

1 votes

À moins que votre pile réseau ne soit en panne, vous ne pouvez pas lier un port TCP à l'adresse 0.0.0.0.

30 votes

Vous puede se lient à 0.0.0.0. Vous ne pouvez pas y accéder. Si vous êtes sous Linux (ou même sous Windows, installez simplement netcat pour Windows) essayez : dans un terminal : nc -l 0.0.0.0 4321 et dans un second terminal : telnet <IP de n'importe quelle interface de votre ordinateur> 4321 Et il s'y connectera.

0 votes

Comme je l'ai dit, à moins que vous n'ayez une pile réseau cassée...

53voto

Zafar Points 241

Vous ne pouvez pas vous lier à plus d'une adresse IP, mais vous pouvez vous lier à toutes les adresses IP disponibles. Dans ce cas, il suffit d'utiliser 0.0.0.0 pour une adresse de liaison dans votre fichier de configuration MySQL (par exemple, /etc/mysql/my.cnf) comme suit :

bind-address    = 0.0.0.0

Si l'adresse est 0.0.0.0, le serveur accepte les connexions TCP/IP sur toutes les interfaces IPv4 des hôtes du serveur.

De plus, si l'adresse est :: le serveur accepte les connexions TCP/IP sur toutes les interfaces IPv4 et IPv6 de l'hôte du serveur. Utilisez cette adresse pour autoriser les connexions IPv4 et IPv6 sur toutes les interfaces du serveur.

Ou vous pouvez simplement commenter bind-address= pour qu'il se lie à toutes les adresses. Mais assurez-vous que vous n'avez pas skip-networking activé dans votre my.cnf si vous souhaitez autoriser également les connexions à distance (Lire la suite : MySQL : Autoriser les connexions distantes ET locales ).

Après avoir changé l'adresse de liaison, n'oubliez pas de redémarrer votre serveur MySQL par :

sudo service mysql restart

À terme, vous pouvez envisager d'exécuter plusieurs instances de MySQL sur une seule machine (ports différents) avec une réplication maître/esclave. La réplication permet de copier les données d'un serveur de base de données MySQL (le maître) vers un ou plusieurs serveurs de base de données MySQL (les esclaves).

Lire la suite :

0 votes

Cela fonctionne bien. N'oubliez pas de vérifier si tous les utilisateurs sont autorisés à se connecter à partir de cette deuxième, troisième ou autre adresse IP.

19voto

Andreas Points 317

Non, vous ne pouvez pas. La page vers laquelle vous vous dirigez indique clairement :

L'adresse IP à laquelle se lier. Une seule adresse peut être sélectionnée. Si cette option est spécifiée plusieurs fois, la dernière adresse donnée est utilisée.

Si aucune adresse ou si 0.0.0.0 est spécifié, le serveur écoute sur toutes les interfaces.

18voto

txyoji Points 375

Comme d'autres l'ont répondu, il n'existe pas encore de moyen de se lier sélectivement à plus d'une interface.

Linux dispose de quelques outils TCP qui rendent cela possible. Dans cette configuration, vous configurez mysql pour qu'il écoute sur 127.0.0.1, puis vous utilisez redir pour l'exposer sur des interfaces arbitraires.

Je l'ai utilisé pour aider un invité de boîte virtuelle à voir mysql installé sur la machine hôte.

redir --laddr=192.168.33.1 --lport=3306 --caddr=127.0.0.1 --cport=3306 &

1 votes

Remarque MySQL >= 8.0.13 permet de se lier à plus d'une interface.

1 votes

Rinetd serait une solution similaire ...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X