Androide

Cómo permitir conexiones remotas al servidor de base de datos mysql

¿Cómo configurar MYSQL para conexiones remotas en XAMPP? | Windows #mysql

¿Cómo configurar MYSQL para conexiones remotas en XAMPP? | Windows #mysql

Tabla de contenido:

Anonim

De manera predeterminada, el servidor MySQL escucha conexiones solo desde localhost, lo que significa que solo las aplicaciones que se ejecutan en el mismo host pueden acceder a él.

Sin embargo, en algunas situaciones, es necesario acceder al servidor MySQL desde una ubicación remota. Por ejemplo, cuando desea conectarse al servidor MySQL remoto desde su sistema local, o cuando utiliza una implementación de varios servidores donde la aplicación se ejecuta en una máquina diferente del servidor de la base de datos. Una opción sería acceder al servidor MySQL a través del túnel SSH y otra es configurar el servidor MySQL para aceptar conexiones remotas.

En esta guía, veremos los pasos necesarios para permitir conexiones remotas a un servidor MySQL. Las mismas instrucciones aplican para MariaDB.

Configurar el servidor MySQL

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

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

Para hacerlo, debe editar el archivo de configuración de MySQL y agregar o cambiar el valor de la opción de bind-address . Puede configurar una sola dirección IP y rangos de IP. Si la dirección es 0.0.0.0 , el servidor MySQL acepta conexiones en todas las interfaces IPv4 del host. Si tiene IPv6 configurado en su sistema, en lugar de 0.0.0.0 , use :: .

La ubicación del archivo de configuración de MySQL difiere según la distribución. En Ubuntu y Debian, el archivo se encuentra en /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 su editor de texto:

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

Busque una línea que comience con bind-address y establezca su valor en la dirección IP en la que debe escuchar un servidor MySQL.

De forma predeterminada, el valor se establece en 127.0.0.1 (solo se escucha en localhost).

En este ejemplo, configuraremos el servidor MySQL para escuchar 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 , elimínela o coméntela agregando # al comienzo de la línea.

En MySQL 8.0 y superior, la directiva bind-address puede no estar presente. En este caso, agréguelo debajo de sección.

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

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

sudo systemctl restart mysql

En distribuciones basadas en RedHat como CentOS para reiniciar la ejecución del servicio:

sudo systemctl restart mysqld

Conceder acceso a un usuario desde una máquina remota

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

Inicie sesión en el servidor MySQL como usuario root escribiendo:

sudo mysql

mysql -uroot -p

Desde el interior del shell de MySQL, use la instrucción GRANT para otorgar acceso al usuario remoto.

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

Dónde:

  • database_name es el nombre de la base de datos a la que se conectará el usuario. user_name es el nombre del usuario de MySQL. ip_address es la dirección IP desde la cual se conectará el usuario. Use % para permitir que el usuario se conecte desde cualquier dirección IP. user_password es la contraseña del usuario.

Por ejemplo, para otorgar acceso a una base de datos dbname a un usuario llamado foo con contraseña my_passwd desde una máquina cliente con IP 10.8.0.5 , debe ejecutar:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Configurar firewall

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

Iptables

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

Permitir 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 la herramienta de firewall predeterminada en Ubuntu. Para permitir el acceso desde cualquier dirección IP en Internet (muy insegura), ejecute:

sudo ufw allow 3306/tcp

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

sudo ufw allow from 10.8.0.5 to any port 3306

CortafuegosD

FirewallD es la herramienta de administración de firewall predeterminada en CentOS. Para permitir el acceso desde cualquier dirección IP en Internet, escriba (muy inseguro):

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 zona FirewallD o usar una regla enriquecida. Bueno, crea 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 verificar que el usuario remoto pueda conectarse al servidor MySQL, ejecute el siguiente comando:

mysql -u user_name -h mysql_server_ip -p

Donde user_name es el nombre del usuario al que le concedió acceso y mysql_server_ip es la dirección IP del host donde se ejecuta el servidor MySQL.

Si todo está configurado correctamente, podrá iniciar sesión en el servidor remoto MySQL.

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

El siguiente error indica que el usuario al que está intentando iniciar sesión no tiene permisos para acceder al servidor remoto MySQL.

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

Conclusión

MySQL, el servidor de bases de datos de código abierto más popular por defecto, escucha las conexiones entrantes solo en localhost.

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

  1. Configure el servidor MySQL para escuchar en todas o una interfaz específica. Otorgue acceso al usuario remoto. Abra el puerto MySQL en su firewall.
mysql mariadb