Mysql-Bindeadresse nur im lokalen Subnetz

Mysql-Bindeadresse nur im lokalen Subnetz

Ich versuche, Benutzern in meinem lokalen Subnetz die Anmeldung bei meinem MySQL-Server zu ermöglichen.

Auf dem Server läuft Ubuntu 23.10 und MySql Version 0.0.35-0ubuntu0.213.10.1

Die Clients sind 2 iMacs mit macOS Sonoma 14.2.1 und ein Windows 11-PC.

Der Ubuntu-Server befindet sich in meinem lokalen Subnetz (192.168.1.0), ist aber auch über eine öffentliche feste IP-Adresse erreichbar. Alle Clients verwenden MYSQL Workbench 8.0

Ich habe den öffentlichen Zugriff auf den Server (außer HTTP) über meine Firewall blockiert. Mein Problem besteht jedoch darin, meinen lokalen Clients Zugriff auf den MySQL-Server zu gewähren.

Ich habe geändert/etc/mysql/mysql.conf.d/mysqld.cnfund geändert bind-address = 127.00.0.1 to 0.0.0.0, sodass Mysqld in jedem Subnetz lauscht. Das scheint zwar sehr sicher zu sein, funktioniert aber.

Ich habe es versucht bind-address = 192.168.1.xxx, 192.168.1.yyy, 192.1658.1.zzz, aber beim Versuch, den MySQL-Dienst neu zu starten, erhalte ich die Fehlermeldung.

 **Job for mysql.service failed because the control process exited with error code.**
 **See "systemctl status mysql.service" and "journalctl -xeu mysql.service" for details** With an exit code of 1.

Ich habe es auch versucht, bind-address = 192.168.1.0aber es gibt dieselbe Fehlermeldung. Ich wäre sehr dankbar für jeden Rat, wie ich die Bind-Adresse auf mein lokales Subnetz oder sogar nur auf meine drei Clients beschränken kann.

Antwort1

Bind funktioniert nicht so, wie Sie denken.

Es sagtwelcheNetzwerkschnittstelle, an die gebunden werden soll. Es muss sich um eine auf dem Computer konfigurierte Netzwerkschnittstelle handeln.

0.0.0.0 ist ein Sonderfall, der im Wesentlichen besagtalleverfügbare Schnittstellen.

Der Datenverkehr wird in keiner Weise eingeschränkt. Jede IP kann über die Schnittstellen, die sie abhört, Kontakt mit ihr aufnehmen. Wenn Sie den Datenverkehr einschränken möchten, verwenden Sie eine Firewall.

Daher ist in Ihrem Szenario die Bindung an 0.0.0.0 kein Problem. Sie unterscheidet sich nicht von der Bindung an die spezifische Schnittstelle, wenn Sie nur eine haben.

Antwort2

Ich habe eine ähnliche Situation, in der ich einen HAproxy-„Puffer“ hinzugefügt habe. Ich kann nicht sagen, ob das bei Ihnen funktioniert, aber es sollte funktionieren.

Ich habe HAproxy auf demselben Host wie mysqld hinzugefügt und einen Listener in HAproxy auf Port 33061 (anstelle des Standardports 3306) erstellt.

ss -antlp;
#LISTEN    0         128          <PUBLIC_IP>:33061            0.0.0.0:*       users:(("haproxy",pid=32645,fd=12))

Die Konfiguration sieht so aus ...

listen mysql
  bind        <PUBLIC_IP>:33061
  mode        tcp
  option      tcplog
  acl         mysql_ip_OK src -f /etc/haproxy/whitelist.IPs
  tcp-request connection reject if !mysql_ip_OK
  server      mysql1 127.0.0.1:3306

und der „Filter“ ist so …

cat <<EOF> /etc/haproxy/whitelist.IPs`
192.168.1.xxx
192.168.1.yyy
192.168.1.zzz
EOF

Jeder Verbindungsversuch würde theoretisch blockiert, wenn er nicht ausdrücklich in /etc/haproxy/whitelist.IPs aufgeführt ist. Die Clients verbinden sich dann mit <PUBLIC_IP>:33061 statt mit <PUBLIC_IP>:3306 und Sie erhalten zusätzliche Sicherheit

verwandte Informationen