Como permitir conexiones remotas a MySQL

Hola Me llamo Fran y os traigo un nuevo post.

El servidor MySQL predeterminado sólo escucha a localhost. Lo que significa que nadie puede conectar MySQL desde el sistema remoto. Lo que también es una buena práctica para fines de seguridad.

En muchos casos, tenemos que acceder a la base de datos MySQL desde sistemas remotos. En los casos más posibles de entorno de producción donde utilizamos instancias separadas para el servidor de bases de datos. También en caso de aplicación alojada en entornos de equilibrio de carga, donde creamos un servidor centralizado de base de datos accesible desde varios sistemas.

Este tutorial le ayuda a configurar el servidor MySQL para permitir las conexiones desde sistemas remotos.

Paso 1: configure el servicio MySQL

El servidor MySQL predeterminado sólo escucha en la interfaz localhost. Hay que cambiar esto para escuchar en toda la interfaz.

Edite el archivo de configuración del servidor de bases de datos MySQL en un editor de texto. Los sistemas basados ​​en Debian tienen configuración MySQL a /etc/mysql/mysql.conf.d/mysqld.cnf. Editamos el fichero de configuración de MySQL:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 

Busque la configuración de la dirección de vinculación en el archivo. La dirección de vinculación por defecto se establece en 127.0.0.1 como se muestra a continuación:

Cambie el valor de la dirección de enlace a 0.0.0.0 para habilitar la escucha del servidor de bases de datos MySQL a todas las interfaces de red.

Después del cambio, el valor será el anterior.

En el archivo de configuración de la base de datos MySQL 8, no verá la configuración de la dirección de enlace. Por lo tanto, basta con añadir manualmente la dirección de vinculación debajo [mysqld] etiqueta.

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log
bind-address    = 0.0.0.0

Guarde el archivo de configuración y ciérrelo.

Reinicie el servicio MySQL para aplicar cambios.

systemctl restart mysql.service 

Ahora, verifique los cambios y MySQL escucha todos los anfitriones remotos. Ejecute el siguiente para ver el estado del servicio:

netstat -tulpn  | grep -e "Local Address" -e "mysql"  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1698595/mysqld tcp6 0 0 :::33060 :::* LISTEN 1698595/mysqld

Veréis que MySQL está escuchando 0 0.0.0.0:3306 dirección local. Quiere decir que ahora el servidor escucha en todas las interfaces de red del puerto 3306.

Paso 2: crear un usuario de MySQL con acceso remoto

A continuación, debe crear un usuario MySQL para conectarse desde el host remoto.

mysql> CRATE USER 'username'@'remote_server_ip_or_hostname' IDENTIFIED BY 'pa$$word';
  • nombre de usuario: el nombre de la cuenta de usuario utilizado para acceder al servidor MySQL
  • remote_server_ip_or_hostname – Esta es la dirección IP o el nombre de host del host remoto desde donde el usuario puede conectarse al servidor mysql.

También puede utilizar ‘%’ en lugar del host remoto para permitir cualquier host remoto. Por ejemplo:

mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'pa$$word';

Como alternativa, puede crear una cuenta de usuario nuevo que sólo se conecte desde el host remoto con el orden siguiente:

mysql> GRANT ALL on *.* TO 'username'@'remote_server_ip_or_hostname';

Vuelva a cargar los privilegios para ejecutar el servidor MySQL.

mysql> FLUSH PRIVILEGES;

En este momento, ha configurado el servidor MySQL para escucharlo desde anfitriones remotos. Se ha creado una cuenta de usuario de MySQL utilizado para la autenticación desde anfitriones remotos.

A continuación, hay que ajustar los grupos de seguridad o el cortafuegos del sistema para abrir el puerto MySQL para sistemas remotos.

Paso 3: ajustar el cortafuegos

Antes de cambiar el cortafuegos del sistema, el sistema que se ejecuta en entornos de alojamiento en la nube debe tener un grupo de seguridad de actualización para abrir el puerto MySQL basado en servicios de alojamiento.

A continuación, deberá abrir el puerto al cortafuegos del sistema (si está activo). Por ejemplo, la mayoría del sistema Linux optó por firewalld y algunos sistemas como los sistemas basados ​​en Debian utilizan un firewall UFW.

Actualizar el cortafuegos según sus sistemas operativos.

utilizando FirewallD

FirewallD es el servicio de cortafuegos predeterminado en sistemas basados ​​en CentOS y RedHat. Puede utilizar el siguiente comando para abrir el puerto MySQL 3306 a todo el mundo, pero no se recomienda para los servidores de producción.

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp  sudo firewall-cmd --reload 

Se recomienda que el servidor de producción abre el puerto sólo para los anfitriones necesarios. Los usos de FirewallD pueden utilizar reglas enriquecidas para abrir un puerto específico sólo para direcciones IP o redes específicas. Por ejemplo:

firewall-cmd --permanent --zone=public --add-rich-rule="
  rule family="ipv4"
  source address="192.168.0.0/24"
  port protocol="tcp" port="3306" accept" 

Después de añadir la regla necesaria a firewalld, asegúrese de volver a cargar para aplicar los cambios en tiempo de ejecución.

sudo firewall-cmd --reload 

utilizando UFW

El UFW (Uncomplicated Firewall) es la herramienta de cortafuegos predeterminada al sistema Ubuntu y Debian. Puede utilizar el siguiente comando para abrir el puerto 3306 de todos.

sudo ufw allow 3306/tcp 

Pero se recomienda a los usuarios de producciones que abran puerto para IP o red específicos solamente. Para permitir el acceso desde una dirección IP específica utilice órdenes como:

sudo ufw allow from 192.168.0.0/24 to any port 3306 

Asegúrese de cambiar 192.168.0.0/24 con la dirección IP de su red o sistema.

conclusión

Este tutorial ha ayudado a configurar el servidor MySQL para aceptar la conexión remota de anfitriones remotos. También se creó una cuenta de usuario de MySQL permitido conectarse desde anfitriones remotos.

Este Blog lo escribimos para colaborar y servir de referencia a la comunidad Linux. Esperamos que os guste.

Leave a Reply