Question Comment lier un serveur MySQL à plusieurs adresses IP?


Existe-t-il un moyen secret de lier MySQL à plusieurs adresses IP?

Aussi loin que je peux voir le bind-address Le paramètre dans le fichier my.cnf ne prend pas en charge plus d’une adresse IP et vous ne pouvez l’avoir plus d’une fois.


245
2017-09-02 16:04


origine




Réponses:


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

#skip-networking
#bind-address                   = 127.0.0.1

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


228
2017-09-02 16:08



Correct. La liaison est limitée à 0, 1 ou tout Adresses IP sur le serveur. - Joe
Notez cependant que vous pouvez publier et servir à la fois un socket Unix local et un socket réseau en spécifiant à la fois socket et bind-address options. - danorton
toujours vrai à compter d'aujourd'hui. - Dennis Nolte
C'est ridicule. - Phillipp
@AJP Mysql traite différemment "localhost" et "127.0.0.1" dans le système de privilèges. Confirmé ici: Un fichier de socket Unix est utilisé si vous ne spécifiez pas de nom d'hôte ou si vous indiquez le nom d'hôte spécial localhost. - Christian Lescuyer


La liaison à 127.0.0.x ne le rendra pas disponible à tous les périphériques, il le rendra disponible localement uniquement. Si vous souhaitez le rendre disponible pour toutes les interfaces, vous devez utiliser 0.0.0.0. Si vous souhaitez y accéder à partir de plusieurs, mais de moins de toutes les interfaces, vous devez vous connecter à 0.0.0.0 et utiliser le pare-feu pour les interfaces auxquelles vous ne voulez pas accéder.

De plus, en tant que deuxième couche de sécurité, vous devez vous assurer que le champ hôte de tous vos utilisateurs MySQL est défini sur autre chose que% (c’est-à-dire n’importe quel hôte).


76
2017-09-02 16:29



Sauf si votre pile réseau est endommagée, vous ne pouvez pas lier un port TCP à l'adresse 0.0.0.0. - John Gardeniers
Vous pouvez se lier à 0.0.0.0. Vous ne pouvez tout simplement pas vous y rendre. Si vous êtes sur Linux (ou même sur 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 a> 4321 Et cela se connecter à elle. - Grey Panther
Comme je l'ai dit, à moins que votre pile réseau ne soit en panne ... - John Gardeniers
@JohnGardeniers C'est pourquoi c'est dans la page de manuel linux ip (7) définie sous les adresses spéciales: INADDR_ANY (0.0.0.0) means any address for binding;? - ebyrob
Sur Debian, créez un fichier /etc/mysql/conf.d/bindaddress.cnf fichier avec contenu [mysqld] \n bind-address = 0.0.0.0 - Yves Martin


Vous ne pouvez pas lier plus d'une adresse IP, mais vous pouvez également vous lier à toutes les adresses IP disponibles. Si oui, utilisez simplement 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 de l'hôte du serveur.

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

Ou vous pouvez simplement commenter bind-address= tout à fait, il sera donc lié à toutes les adresses. Mais assurez-vous que vous n'avez pas skip-networking activé dans votre my.cnf si vous souhaitez également autoriser les connexions à distance (pour en savoir plus: MySQL: Autoriser les connexions distantes ET locales).

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

sudo service mysql restart

Vous pouvez éventuellement envisager d'exécuter plusieurs instances de MySQL sur une même machine (différents ports) 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:


33
2017-08-11 09:37



En fait, j'espérais une option pour relier certaines adresses, mais pas toutes. - BlaM


Non vous ne pouvez pas. La page vers laquelle vous créez un lien 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 0.0.0.0 n'est spécifié, le serveur écoute toutes les interfaces.


19
2017-09-14 20:45





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

Linux a quelques outils TCP qui le rendent possible. Dans cette configuration, vous configureriez mysql pour écouter sur 127.0.0.1 puis utiliser redir pour l'exposer sur des interfaces arbitraires.

Je l'utilise pour aider un invité virtuel à voir mysql installé sur la machine hôte.

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

8
2018-02-24 20:23





Je pense que votre question est liée à ce bug http://bugs.mysql.com/bug.php?id=14979 Le rapport de bogue suggère une solution de contournement.


6
2017-09-02 16:14



Une demande de fonctionnalité MySQL datant de 2005! - Tonin


Dans mon.cnf change (généralement /etc/mysql/my.cnf sous Linux ou pour windows check ce réponse.

bind-address                   = 127.0.0.1

à

bind-address                   = 0.0.0.0

Puis redémarrez mysql (sur Ubuntu service mysql restart) sur Windows généralement service redémarrer à travers Win + R services.msc 

0.0.0.0 lui dit de se connecter à toutes les adresses IP disponibles avec un port également indiqué dans my.cnf


2
2017-09-19 18:34