僅 MySQL 綁定位址本機子網

僅 MySQL 綁定位址本機子網

我試圖允許本地子網路上的使用者登入我的 MySQL 伺服器。

伺服器運行的是 Ubuntu 23.10 和 MySql 版本 0.0.35-0ubuntu0.213.10.1

客戶端是 2 台裝有 macos Sonoma 14.2.1 的 iMac 和一台 Windows 11 PC。

ubuntu 伺服器位於我的本機子網路 (192.168.1.0) 上,但也可以透過公用固定 IP 位址存取。所有客戶端均使用MYSQL Workbench 8.0

我已透過防火牆封鎖了對伺服器的公共存取(HTTP 除外)。但我的問題是向我的本機客戶端提供對 MySQL 伺服器的存取權。

我已經修改了/etc/mysql/mysql.conf.d/mysqld.cnf並且更改了bind-address = 127.00.0.1 to 0.0.0.0使 Mysqld 在任何子網路上監聽。但這看起來確實很安全,但確實有效。

我嘗試過使用,bind-address = 192.168.1.xxx, 192.168.1.yyy, 192.1658.1.zzz但是當我嘗試重新啟動 MySQL 服務時,我收到錯誤訊息。

 **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.

我也嘗試過,bind-address = 192.168.1.0但這給了我同樣的錯誤訊息。我非常感謝有關如何將綁定位址限制為僅我的本地子網路甚至僅我的三個客戶端的任何建議

答案1

Bind 並不像您想像的那樣運作。

它說哪個要綁定到的網路介面。它必須是機器上配置的網路介面。

0.0.0.0 是一個特例,本質上是說全部可用的接口。

它不會以任何方式限制流量,任何 IP 都可以在它正在偵聽的介面上聯絡它。如果您想限制流量,請使用防火牆。

因此,在您的場景中,綁定到 0.0.0.0 就可以了;如果你只有一個接口,這與綁定到特定接口沒有什麼不同。

答案2

我有類似的情況,我添加了一個HAproxy“緩衝區”。我不能說這是否適合你,但它應該有用。

我在與 mysqld 相同的主機上新增了 HAproxy,並在連接埠 33061(而不是預設的 3306)上的 HAproxy 中建立了一個偵聽器

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

配置是這樣的...

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

而「過濾器」是這樣的......

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

如果沒有在 /etc/haproxy/whitelist.IPs 中明確列出,理論上任何連接嘗試都會被阻止。

相關內容