Saltar al contenido

Cómo permitir el acceso remoto a MySQL

marzo 4, 2020

 

Esta guía está pensada para servir como un recurso de solución de problemas y punto de partida como a diagnosticar la configuración de MySQL. Vamos a repasar algunos de los problemas que muchos usuarios encuentran MySQL y proporcionan una guía para solucionar problemas específicos. También incluiremos enlaces a tutoriales digitalocean y la documentación oficial de MySQL, que puede ser útil en ciertos casos.

Muchos sitios web y aplicaciones comienzan con su servidor web y base de datos back-end alojado en la misma máquina. Con el tiempo, sin embargo, una configuración como esta puede llegar a ser engorroso y difícil de escala. Una solución común es separar estas funciones mediante la creación de una base de datos remota, permitiendo que el servidor y base de datos para crecer a su propio ritmo en sus propias máquinas.

Uno de los problemas más comunes que los usuarios se ejecutan en la hora de tratar de establecer una base de datos MySQL remota es que su única instancia de MySQL está configurado para escuchar las conexiones locales. Esta es la configuración por defecto de MySQL, pero no va a trabajar para una configuración de base de datos remota desde MySQL debe ser capaz de escuchar para obtener una dirección IP externa donde se puede llegar al servidor. Para permitir esto, abra su archivo mysqld.cnf:

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

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

Vaya a la línea que comienza con la directiva bind-dirección. Se parece a esto:

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
. . .

Por defecto, este valor se establece en 127.0.0.1, lo que significa que el servidor sólo buscará las conexiones locales. Usted tendrá que cambiar esta directiva para hacer referencia a una dirección IP externa. A los efectos de la resolución de problemas, podría configurar esta directiva para una dirección IP comodín, ya sea *, :: o 0.0.0.0:

. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
. . .

Nota: Si está ejecutando MySQL 8+, la directiva se unen dirección se no estar en el archivo de mysqld.cnf por defecto. En este caso, añada la siguiente línea resaltada en la parte inferior del archivo:

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

Después de cambiar esta línea, guardar y cerrar el archivo (CTRL + X, Y, a continuación, ENTER si editó con nano).

asumiendo que ha configurado un servidor de seguridad en el servidor de base de datos, también tendrá que abrir el puerto 3306 – puerto por defecto de MySQL – para permitir el tráfico a MySQL.

Si usted sólo va a tener acceso a la base de datos del servidor de una máquina específica, puede conceder esa máquina permiso exclusivo para conectarse a la base de datos de forma remota con el siguiente comando. Asegúrese de reemplazar remote_IP_address con la dirección IP real de la máquina que va a conectar con:

sudo ufw allow from remote_IP_address to any port 3306

  • sudo UFW permiten a remote_IP_address a cualquier puerto 3306

Si necesita acceder a la base de datos de otras máquinas en el futuro, se les conceda el acceso de forma ad hoc con este comando. Sólo recuerde incluir sus respectivas direcciones IP.

Alternativamente, se puede permitir conexiones a la base de datos MySQL desde cualquier dirección de IP con el siguiente comando:

Advertencia : Este comando permitirá que cualquiera pueda acceder a su base de datos MySQL. Do not ejecutarlo si su base de datos contiene los datos sensibles.

sudo ufw allow 3306

  • sudo permiten UFW 3306

Por último, reinicie el servicio de MySQL para que los cambios realizados en mysqld.cnf en vigor:

sudo systemctl restart mysql

  • sudo systemctl reiniciar MySQL

Después de esto, intente acceder a su base de datos de forma remota desde otra máquina:

Nota : Si ha añadido una regla de cortafuegos para permitir sólo las conexiones desde una dirección IP específica, usted debe tratar de acceder a la base de datos con la máquina asociada con esa dirección.

mysql -u user -h database_server_ip -p

  • mysql -u usuario -p -h database_server_ip

Si usted es capaz de acceder a su base de datos, se confirma que la directiva se unen dirección en el archivo de configuración es la cuestión. Tenga en cuenta, sin embargo, que la fijación de bind-dirección en 0.0.0.0 es insegura, ya que permite conexiones a su servidor desde cualquier dirección IP. Por otro lado, si usted todavía no puede acceder a la base de datos de forma remota, a continuación, algo más puede ser la causa del problema. En cualquiera de los casos, puede que le resulte útil seguir nuestra guía sobre cómo configurar una base de datos remota para optimizar el rendimiento del sitio con MySQL en Ubuntu 18.04 para establecer una configuración más segura base de datos remota.