Linux en español
Tutoriales

Cómo permitir conexiones remotas en MySQL Server

Cómo permitir conexiones remotas en MySQL Server
6 minutos de lectura

De forma predeterminada, el servidor MySQL está a la escucha de conexiones sólo desde localhost, lo que significa que se puede acceder sólo por las aplicaciones que se ejecutan en el mismo host.

Sin embargo, en algunas situaciones, es necesario acceder al servidor MySQL desde una ubicación remota. Por ejemplo, cuando se desea conectar al servidor MySQL remoto de su sistema local, o cuando se utiliza un multi-implementación del servidor donde se ejecuta la aplicación en una máquina distinta a la de la base de datos del servidor. Sería una opción para acceder al servidor MySQL a través de un Túnel SSH y el otro es para configurar el servidor de MySQL para aceptar conexiones remotas.

En esta guía, vamos a ir a través de los pasos necesarios para permitir conexiones remotas a un servidor MySQL. Las mismas instrucciones se aplican para MariaDB.

La Configuración Del Servidor MySQL

El primer paso es configurar el servidor MySQL para escuchar en una dirección IP específica o todas las direcciones IP en la máquina.

Si el servidor MySQL y los clientes pueden comunicarse el uno con el otro a través de una red privada, entonces la mejor opción es configurar el servidor MySQL para escuchar sólo la IP privada. De lo contrario, si desea conectarse al servidor a través de una red pública de configurar el servidor MySQL para escuchar en todas las direcciones IP en la máquina.

Para ello, es necesario editar el archivo de configuración de MySQL y agregar o cambiar el valor de la bind-address opción. Se puede establecer una única dirección IP y rangos de IP. Si la dirección es 0.0.0.0, MySQL, el servidor acepta conexiones en todos los host de interfaces IPv4. Si usted tiene IPv6 configuradas en su sistema, entonces en lugar de 0.0.0.0, uso ::.

La ubicación del archivo de configuración de MySQL difiere dependiendo de la distribución. En Ubuntu y Debian se encuentra en el archivo /etc/mysql/mysql.conf.d/mysqld.cnf, mientras que en distribuciones basadas en Red Hat como CentOS, el archivo se encuentra en /etc/my.cnf.

Abra el archivo con tu editor de texto:

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

Busca la línea que comienza con bind-address y establezca su valor en la dirección en la que un servidor MySQL debe escuchar.

De forma predeterminada, el valor se establece a 127.0.0.1 (escucha sólo en localhost).

En este ejemplo, vamos a configurar el servidor MySQL para que escuche en todas las interfaces IPv4 cambiando el valor a 0.0.0.0

mysqld.cnf

bind-address           = 0.0.0.0
# skip-networking
Si hay una línea que contiene skip-networking, eliminar o comentario, es mediante la adición de # al principio de la línea.

En MySQL 8.0 y superior, la bind-address directiva no podrán estar presentes. En este caso, añade que en virtud de la [mysqld] de la sección.

Una vez hecho esto, reinicie el servicio de MySQL para que los cambios surtan efecto. Solo root o usuarios con sudo privilegios puede reiniciar los servicios.

Para reiniciar el servicio de MySQL en Debian o Ubuntu, escriba:

sudo systemctl restart mysql

En RedHat basados en distribuciones como CentOS para reiniciar el servicio:

sudo systemctl restart mysqld

Concesión de Acceso a un Usuario desde un equipo Remoto

El siguiente paso es permitir el acceso a la base de datos para el usuario remoto.

Inicie sesión en el servidor de MySQL como usuario root con el comando:

sudo mysql

Si usted está utilizando el viejo, nativo de MySQL para el complemento de autenticación para iniciar sesión como root, ejecute el comando siguiente y escriba la contraseña cuando se le solicite:

mysql -uroot -p

Desde el interior de la shell de MySQL, el uso de la CONCESIÓN de la declaración para el acceso a la subvención para el usuario remoto.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Donde:

  • database_name es el nombre de la base de datos que el usuario se conecte a.
  • nombre_usuario es el nombre de od el usuario de MySQL.
  • dirección_ip es la dirección IP desde la que el usuario se conecte. Uso % para permitir al usuario conectarse desde cualquier dirección IP.
  • user_password es la contraseña de usuario.

Por ejemplo, para conceder el acceso a una base de datos de nombre de base de datos a un usuario llamado foo con contraseña my_passwd desde una máquina cliente con IP 10.8.0.5, tendría que ejecutar:

La Configuración De Firewall

El último paso es configurar el firewall para permitir el tráfico en el puerto 3306 (MySQL puerto por defecto) de las máquinas remotas.

Iptables

Si usted está usando iptables como el firewall, el comando de abajo le permiten el acceso desde cualquier dirección IP en Internet, en el puerto de MySQL. Esto es muy inseguro.

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Permitir el acceso desde una dirección IP específica:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW es el valor predeterminado herramienta firewall en Ubuntu. Para permitir el acceso desde cualquier dirección IP en Internet (muy inseguro) ejecutar:

sudo ufw allow 3306/tcp

Permitir el acceso desde una dirección IP específica:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD es el cortafuegos por defecto de la herramienta de administración en CentOS. Para permitir el acceso desde cualquier dirección IP en Internet (muy inseguro) tipo:

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

Para permitir el acceso desde una dirección IP específica en un puerto específico, puede crear una nueva FirewallD la zona o el uso de una rica regla. Bien crear una nueva zona llamada mysqlzone:

sudo firewall-cmd --new-zone=mysqlzone --permanent

sudo firewall-cmd --reload
sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32

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

Verificando los Cambios

Para comprobar que el usuario remoto puede conectarse al servidor de MySQL, ejecute el siguiente comando:

mysql -u user_name -h mysql_server_ip -p

Donde nombredeusuario es el nombre de el usuario tiene acceso a y mysql_server_ip es la dirección IP del host en el servidor MySQL se ejecuta.

Si todo está configurado correctamente, usted será capaz de iniciar sesión en el servidor MySQL remoto.

Si obtiene un error como el de abajo, luego el puerto 3306 no está abierto, o el servidor MySQL no está escuchando en la dirección IP.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

El siguiente error se indica que el usuario está intentando iniciar sesión en no tienes permisos para acceso remoto servidor de MySQL.

"ERROR 1130 (HY000): Host ‘10.8.0.5’ is not allowed to connect to this MySQL server" 

Conclusión

MySQL, el más popular de código abierto servidor de base de datos por defecto, está a la escucha de conexiones entrantes sólo en localhost.

Para permitir conexiones remotas a un servidor MySQL, es necesario realizar los siguientes pasos:

  1. Configurar el servidor de MySQL para escuchar en todas o en una interfaz específica.
  2. El acceso a la subvención para el usuario remoto.
  3. Abrir el puerto de MySQL en el servidor de seguridad.

Si usted tiene preguntas, siéntase libre de dejar un comentario más abajo.

Puntuación media / 5. Recuento de votos:

¡Síguenos en redes sociales!

Entradas relaccionadas

Reiniciar tarjeta de red en Ubuntu

Diego García Cuesta

Cómo dar Formato a Unidades USB y Tarjetas SD en Linux

Diego García Cuesta

Instalar Arch GNU/Linux puro desde un live CD

Linux en Español

Redirigir HTTP a HTTPS en Apache/Nginx

Diego García Cuesta

Cómo actualizar los servidores de Ubuntu de un centro de datos

Diego García Cuesta

¿Cómo instalar los drivers privados de Nvidia en Debian 9 Stretch?

Linux en Español