Frage Wie bindet man MySQL Server an mehr als eine IP-Adresse?


Gibt es eine geheime Möglichkeit, MySQL an mehr als eine IP-Adresse zu binden?

Soweit ich das sehen kann Bindeadresse Parameter in der my.cnf unterstützt nicht mehr als eine IP und Sie können es nicht mehr als einmal haben.


245
2017-09-02 16:04


Ursprung




Antworten:


Nein, gibt es nicht (ich habe gerade vor 1 Stunde überprüft). Sie können die Bind-Adresse in my.cnf kommentieren:

#skip-networking
#bind-address                   = 127.0.0.1

Wenn Sie nur 2 IPs haben möchten, müssen Sie eine Firewall verwenden.


228
2017-09-02 16:08



Richtig. Die Bindung ist auf 0, 1 oder beschränkt alles IP-Adressen auf dem Server. - Joe
Beachten Sie jedoch, dass Sie sowohl einen lokalen Unix - Socket als auch einen Netzwerk - Socket veröffentlichen und bereitstellen können, indem Sie beides angeben socket und bind-address Optionen. - danorton
gilt noch heute. - Dennis Nolte
Das ist lächerlich. - Phillipp
@AJP Mysql behandelt "localhost" und "127.0.0.1" im Berechtigungssystem unterschiedlich. Bestätigt hier: Eine Unix-Socket-Datei wird verwendet, wenn Sie keinen Hostnamen angeben oder wenn Sie den speziellen Hostnamen localhost angeben. - Christian Lescuyer


Durch die Bindung an 127.0.0.x wird es nicht für alle Geräte verfügbar gemacht, es wird nur lokal verfügbar gemacht. Wenn Sie es für alle Schnittstellen verfügbar machen möchten, sollten Sie 0.0.0.0 verwenden. Wenn Sie auf mehr als einen, aber weniger als alle Schnittstellen zugreifen möchten, sollten Sie an die Schnittstellen 0.0.0.0 und Firewall binden, auf die Sie nicht zugreifen möchten.

Außerdem sollten Sie als zweite Sicherheitsstufe sicherstellen, dass alle Ihre MySQL-Benutzer ein Host-Feld haben, das auf etwas anderes als% (dh auf einen beliebigen Host) eingestellt ist.


76
2017-09-02 16:29



Wenn Sie keinen Netzwerkstapel haben, können Sie keinen TCP-Port an die Adresse 0.0.0.0 binden. - John Gardeniers
Sie können Binden an 0.0.0.0. Du kannst einfach nicht dorthin gehen. Wenn Sie unter Linux (oder sogar unter Windows, installieren Sie einfach netcat für Windows) versuchen: in einem Terminal: nc -l 0.0.0.0 4321 und in einem zweiten Terminal: telnet <IP von jeder Schnittstelle Ihres Computers> 4321 Und es wird sich mit ihm verbinden. - Grey Panther
Wie gesagt, es sei denn, Sie haben einen kaputten Netzwerkstack ... - John Gardeniers
@ JohnGardeniers Ist das der Grund, warum es in der linux ip (7) man-Seite ist, die unter speziellen Adressen definiert ist: INADDR_ANY (0.0.0.0) means any address for binding;? - ebyrob
Erstellen Sie unter Debian eine Datei /etc/mysql/conf.d/bindaddress.cnf Datei mit Inhalt [mysqld] \n bind-address = 0.0.0.0 - Yves Martin


Sie können nicht an mehr als eine IP-Adresse binden, sondern stattdessen an alle verfügbaren IP-Adressen. Wenn ja, benutze es einfach 0.0.0.0 für eine bindende Adresse in Ihrer MySQL-Konfigurationsdatei (z. B. /etc/mysql/my.cnf) wie folgt:

bind-address    = 0.0.0.0

Wenn die Adresse 0.0.0.0 ist, akzeptiert der Server TCP / IP-Verbindungen auf allen IPv4-Schnittstellen des Serverhosts.

Außerdem wenn die Adresse ist ::Der Server akzeptiert TCP / IP-Verbindungen auf allen IPv4- und IPv6-Schnittstellen des Serverhosts. Verwenden Sie diese Adresse, um sowohl IPv4- als auch IPv6-Verbindungen auf allen Serverschnittstellen zuzulassen.

Oder Sie können einfach auskommentieren bind-address= zusammen, so wird es an alle Adressen binden. Aber stellen Sie sicher, dass Sie nicht haben skip-networking in Ihrer my.cnf aktiviert, wenn Sie auch entfernte Verbindungen erlauben wollen (Lesen Sie mehr: MySQL: Erlaube sowohl entfernte als auch lokale Verbindungen).

Vergessen Sie nach dem Ändern der Bindungsadresse nicht, Ihren MySQL Server neu zu starten, indem Sie:

sudo service mysql restart

Schließlich können Sie in Betracht ziehen, mehrere Instanzen von MySQL auf einer einzelnen Maschine (verschiedenen Ports) mit Master / Slave-Replikation auszuführen. Durch die Replikation können Daten von einem MySQL-Datenbankserver (dem Master) auf einen oder mehrere MySQL-Datenbankserver (die Slaves) kopiert werden.

Weiterlesen:


33
2017-08-11 09:37



Eigentlich hatte ich auf eine Option gehofft, an einige, aber nicht an alle Adressen zu binden. - BlaM


Nein, du kannst nicht. Auf der Seite, auf die Sie verlinken, heißt es:

Die IP-Adresse, an die gebunden werden soll. Es kann nur eine Adresse ausgewählt werden. Wenn diese Option mehrfach angegeben wird, wird die letzte angegebene Adresse verwendet.

Wenn keine Adresse oder 0.0.0.0 angegeben ist, überwacht der Server alle Schnittstellen.


19
2017-09-14 20:45





Wie andere bereits geantwortet haben, gibt es noch keine Möglichkeit, selektiv an mehr als eine Schnittstelle zu binden.

Linux hat einige TCP-Tools, die es möglich machen. In diesem Setup würden Sie konfigurieren, dass mysql auf 127.0.0.1 hört und dann verwendet Redir um es auf beliebigen Schnittstellen verfügbar zu machen.

Ich habe das verwendet, um einem virtuellen Box-Gast zu helfen, mysql auf dem Host-Rechner installiert zu sehen.

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

8
2018-02-24 20:23





Ich denke, deine Frage hängt mit diesem Fehler zusammen http://bugs.mysql.com/bug.php?id=14979 Der Fehlerbericht schlägt eine Problemumgehung vor.


6
2017-09-02 16:14



Eine MySQL-Feature-Anfrage aus dem Jahr 2005! - Tonin


Im mein.cnf ändern (normalerweise /etc/mysql/my.cnf auf Linux oder für Windows überprüfen diese Antworten.

bind-address                   = 127.0.0.1

zu

bind-address                   = 0.0.0.0

Dann starte mysql neu (auf Ubuntu Service mysql Neustart) Bei Windows wird der Dienst normalerweise neu gestartet Win + R services.msc 

0.0.0.0 sagt, dass es an alle verfügbaren IPs mit dem Port, der auch in my.cnf angegeben ist, bindet


2
2017-09-19 18:34