
Estoy intentando permitir que los usuarios de mi subred local inicien sesión en mi servidor MySQL.
El servidor ejecuta Ubuntu 23.10 y MySql versión 0.0.35-0ubuntu0.213.10.1
Los Clientes son 2 iMacs con macos Sonoma 14.2.1 y una PC con Windows 11.
El servidor Ubuntu está en mi subred local (192.168.1.0) pero también está disponible a través de una dirección IP fija pública. Todos los clientes utilizan MYSQL Workbench 8.0
He bloqueado el acceso público al servidor (aparte de HTTP) a través de mi firewall. Pero mi problema es dar acceso al servidor MySQL a mis clientes locales.
He enmendado/etc/mysql/mysql.conf.d/mysqld.cnfy cambió bind-address = 127.00.0.1 to 0.0.0.0
para que Mysqld escuche en cualquier subred. Pero esto parece muy seguro pero funciona.
Intenté usarlo bind-address = 192.168.1.xxx, 192.168.1.yyy, 192.1658.1.zzz
pero cuando intento reiniciar el servicio MySQL aparece el mensaje de error.
**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.
También lo he intentado bind-address = 192.168.1.0
pero me da el mismo mensaje de error. Estaría muy agradecido por cualquier consejo sobre cómo limitar la dirección de enlace solo a mi subred local o incluso solo a mis tres clientes.
Respuesta1
Bind no funciona como crees.
Dicecualinterfaz de red a la que conectarse. Tiene que ser una interfaz de red configurada en la máquina.
0.0.0.0 es un caso especial, que básicamente dicetodointerfaces disponibles.
No restringe el tráfico de ninguna manera, cualquier IP puede contactarlo en las interfaces que está escuchando. Si desea limitar el tráfico, utilice un firewall.
Por lo tanto, en su escenario, vincularse a 0.0.0.0 estará bien; no será diferente de vincularse a la interfaz específica si solo tiene una.
Respuesta2
Tengo una situación similar, en la que agregué un "búfer" HAproxy. No puedo decir si esto funcionará para usted, pero debería funcionar.
Agregué HAproxy en el mismo host que mysqld y creé un oyente en HAproxy en el puerto 33061 (en lugar del 3306 predeterminado).
ss -antlp;
#LISTEN 0 128 <PUBLIC_IP>:33061 0.0.0.0:* users:(("haproxy",pid=32645,fd=12))
La configuración es así...
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
y el "filtro" es así...
cat <<EOF> /etc/haproxy/whitelist.IPs`
192.168.1.xxx
192.168.1.yyy
192.168.1.zzz
EOF
En teoría, cualquier intento de conexión se bloquearía si no aparece específicamente en /etc/haproxy/whitelist.IPs. Los clientes luego se conectan a <PUBLIC_IP>:33061 en lugar de <PUBLIC_IP>:3306 y usted obtiene seguridad adicional.