En general, debe configurar su servidor de base de datos para escuchar la conexión de base de datos en un socket de dominio Unix o para escuchar solo en localhost. MySQL no debe configurarse para escuchar en una dirección IP externa o, lo que es peor, para escuchar en todas las direcciones, a menos que el usuario habitual de la base de datos (generalmente una aplicación web) no esté ejecutándose en la misma máquina. Y si la aplicación es remota, hay varias cosas que debe tener en cuenta.
La forma en que lo hace es establecer la configuración de la dirección de enlace en la dirección de loopback (127.0.0.1). Si haces esto, nadie podrá conectarse a MySQL de forma remota, a menos que ya tengan una conexión con el servidor (por ejemplo, SSH) y realicen una conexión "local" desde allí. En este caso, confiará en SSH para realizar el cifrado y la autenticación, y el sistema operativo para no enrutar los paquetes remotos que llegan a la dirección de bucle de retorno a su aplicación. Además, puede configurar MySQL para que requiera contraseña / autenticación, para restringir que los usuarios locales sin privilegios se conecten a la base de datos. Tenga en cuenta que no puede restringir a los usuarios con privilegios (root y alguien con acceso físico sin restricciones). Además, puede configurar un servidor de seguridad de host (es decir, iptable en Linux) para limitar aún más los puertos abiertos en el sistema.
Puede realizar la administración remota mediante el reenvío local de SSH. Configurará Workbench para conectarse al puerto local de su máquina local, y SSH reenviará esa conexión al puerto MySQL en el servidor.
Otra forma de hacer la administración remota es configurar PHPMyAdmin para que escuche en un puerto HTTPS público. En esta configuración, confiará en PHPMyAdmin para realizar la autenticación y HTTPS para el cifrado. Tenga en cuenta que el uso de PHPMyAdmin a través de HTTP no encriptado es inseguro, debe usar HTTPS, también PHPMyAdmin, si bien es conveniente, expone una gran superficie de ataque, ya que es una aplicación compleja de PHP. Por ejemplo, puede ser vulnerable a CSRF o XSS.
Puede proteger aún más PHPMyAdmin configurando su servidor web (por ejemplo, Apache) para que requiera un "certificado de cliente TLS" para acceder a la aplicación PHPMyAdmin. En esta configuración, confiará en Apache para la autenticación y HTTPS para el cifrado. Debe usar esto junto con el propio mecanismo de autenticación de PHPMyAdmin.
Si su aplicación no se está ejecutando en la misma máquina que su base de datos (común en las bases de datos con gran cantidad de usuarios o que comparten varias aplicaciones), puede permitir que MySQL se enlace a la dirección IP de una red privilegiada. En este modelo de seguridad, cualquier persona que esté conectada a la red privilegiada y que el administrador de la red pueda enviar paquetes IP al servidor de la base de datos se considera de confianza. En este caso, dependerá del administrador de red del servidor. A menos que tenga experiencia en redes y confíe en quien configuró el administrador de red y su configuración de firewall, no lo recomendaría. La administración remota, en este caso, se haría conectándose a la red privilegiada mediante una VPN. Es necesario que haya un firewall de red que impida que las conexiones desde fuera de la red privilegiada se enruten al servidor de la base de datos. En esta configuración, la autenticación la realiza el servidor VPN y los enrutadores que aplican la tabla de enrutamiento de LAN.
Además, puede configurar MySQL para requiere un cliente TLS certificado . Con esta configuración, el servidor MySQL también está haciendo autenticación. Se puede usar si no confía plenamente en el administrador de la red o si no confía en todos los usuarios de la red que pueden conectarse a la máquina de la base de datos.
Finalmente, puede exponer MySQL para enlazar a una dirección IP pública.
No lo recomiendo, ya que MySQL no es una aplicación diseñada para exponerse en un puerto público (aunque MySQL puede requerir el certificado de cliente TLS). Apache, sshd y la puerta de enlace VPN, por otro lado, están diseñadas para que puedan configurarse para ser expuestas en una dirección pública de forma segura.
A menos que sepa que lo necesita, recomendaría no configurar MySQL para escuchar en una dirección sin loopback. Y no hay ninguna buena razón para exponer deliberadamente un servidor de base de datos en una dirección IP pública por un período de tiempo prolongado. Esto solo puede considerarse una mala configuración o incompetencia.
No deberías necesitar SOCKS (OpenSSH Dynamic forwarding). SOCKS solo es útil si tiene una gran cantidad de máquinas de destino y no desea configurar a qué puerto local va a dónde. En este caso, tiene una máquina de destino específica, que es su servidor de base de datos en el puerto de la base de datos, por lo que solo necesita reenviar ese puerto.