Vraag Hoe MySQL-server aan meer dan één IP-adres te binden?


Is er een geheime manier om MySQL aan meer dan één IP-adres te binden?

Voor zover ik het kan zien bind-adres parameter in my.cnf ondersteunt niet meer dan één IP en je kunt het niet meer dan één keer hebben.


245
2017-09-02 16:04


oorsprong




antwoorden:


Nee, dat is er niet (ik heb het net 1 uur geleden gecontroleerd). U kunt reageren op het bindadres in my.cnf:

#skip-networking
#bind-address                   = 127.0.0.1

Als u slechts 2 IP-adressen wilt, moet u een firewall gebruiken.


228
2017-09-02 16:08



Correct. Binding is beperkt tot 0, 1 of allemaal IP-adressen op de server. - Joe
Merk echter op dat u zowel een lokale unix-socket als een netwerkaansluiting kunt publiceren en bedienen door zowel de socket en bind-address opties. - danorton
nog steeds waar vanaf vandaag. - Dennis Nolte
Dat is belachelijk. - Phillipp
@AJP Mysql behandelt 'localhost' en '127.0.0.1' anders in het privilegesysteem. Bevestigd hier: Een Unix-socketbestand wordt gebruikt als u geen hostnaam opgeeft of als u de speciale hostnaam localhost opgeeft. - Christian Lescuyer


Binding to 127.0.0.x zal het niet beschikbaar maken voor alle apparaten, het zal het alleen lokaal beschikbaar maken. Als je het beschikbaar wilt maken voor alle interfaces, moet je 0.0.0.0 gebruiken. Als u toegang wilt hebben tot meer dan één interface, maar minder dan alle interfaces, moet u zich binden aan 0.0.0.0 en de firewall van de interfaces waartoe u niet toegang wilt hebben.

Als tweede beveiligingslaag moet u er ook voor zorgen dat al uw MySQL-gebruikers een hostveld hebben ingesteld op iets anders dan% (dwz elke host).


76
2017-09-02 16:29



Tenzij u een kapotte netwerkstack hebt, kunt u geen TCP-poort binden om 0.0.0.0 te adresseren. - John Gardeniers
U kan binden aan 0.0.0.0. Je kunt er gewoon niet naartoe lopen. Als je Linux gebruikt (of zelfs Windows, installeer netcat voor Windows) probeer dan: in één terminal: nc -l 0.0.0.0 4321 en in een tweede terminal: telnet <IP van elke interface van je computer> 4321 En het zal er verbinding mee maken. - Grey Panther
Zoals ik al zei, tenzij je een kapotte netwerkstack hebt ... - John Gardeniers
@JohnGardeniers is daarom de linux ip (7) man-pagina die is gedefinieerd onder speciale adressen: INADDR_ANY (0.0.0.0) means any address for binding;? - ebyrob
Maak op Debian een bestand aan /etc/mysql/conf.d/bindaddress.cnf bestand met inhoud [mysqld] \n bind-address = 0.0.0.0 - Yves Martin


U kunt niet binden aan meer dan één IP-adres, maar u kunt in plaats daarvan aan alle beschikbare IP-adressen binden. Als dat zo is, gebruik het dan gewoon 0.0.0.0 voor een bindend adres in uw MySQL-configuratiebestand (bijvoorbeeld /etc/mysql/my.cnf) als volgt:

bind-address    = 0.0.0.0

Als het adres 0.0.0.0 is, accepteert de server TCP / IP-verbindingen op alle serverhost-IPv4-interfaces.

Verder als het adres is ::, de server accepteert TCP / IP-verbindingen op alle serverhost IPv4- en IPv6-interfaces. Gebruik dit adres om zowel IPv4- als IPv6-verbindingen toe te staan ​​op alle serverinterfaces.

Of u kunt eenvoudig commentaar geven bind-address= helemaal, dus het zal binden aan alle adressen. Maar zorg ervoor dat je dat niet hebt skip-networking ingeschakeld in uw my.cnf als u ook externe verbindingen wilt toestaan ​​(Lees meer: MySQL: toestaat zowel externe als lokale verbindingen).

Vergeet na het wijzigen van het bindadres niet om je MySQL-server opnieuw op te starten door:

sudo service mysql restart

Uiteindelijk kunt u overwegen om meerdere exemplaren van MySQL op één enkele machine (verschillende poorten) met Master / Slave-replicatie uit te voeren. Replicatie maakt het mogelijk gegevens van een MySQL-databaseserver (de master) naar een of meer MySQL-databaseservers (de slaves) te kopiëren.

Lees verder:


33
2017-08-11 09:37



Eigenlijk hoopte ik op een optie om te binden aan sommige, maar niet aan alle adressen. - BlaM


Nee, je kan het niet. Op de pagina die u linkt, staat duidelijk:

Het IP-adres waarnaar moet worden gebonden. Er kan slechts één adres worden geselecteerd. Als deze optie meerdere keren wordt opgegeven, wordt het laatst opgegeven adres gebruikt.

Als er geen adres of 0.0.0.0 is opgegeven, luistert de server op alle interfaces.


19
2017-09-14 20:45





Zoals anderen hebben geantwoord, is er nog geen manier om selectief te binden aan meer dan één interface.

Linux heeft een aantal TCP-tools die het mogelijk maken. In deze opstelling zou je mysql configureren om te luisteren op 127.0.0.1 en vervolgens gebruiken redir om het op willekeurige interfaces te ontmaskeren.

Ik heb dit gebruikt om een ​​virtuele doosgast te helpen zien dat mysql op de hostmachine is geïnstalleerd.

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

8
2018-02-24 20:23





Ik denk dat je vraag gerelateerd is aan deze bug http://bugs.mysql.com/bug.php?id=14979 Het bugrapport suggereert een tijdelijke oplossing.


6
2017-09-02 16:14



Een MySQL-functieverzoek dateert uit 2005! - Tonin


In my.cnf veranderen (meestal /etc/mysql/my.cnf op Linux of voor Windows-controle deze antwoord.

bind-address                   = 127.0.0.1

naar

bind-address                   = 0.0.0.0

Herstart dan mysql (op Ubuntu service mysql opnieuw opstarten) op vensters wordt meestal service opnieuw gestart Win + R services.msc 

0.0.0.0 vertelt het om te binden aan alle beschikbare IP's met poort ook gegeven in my.cnf


2
2017-09-19 18:34