Los desarrolladores de aplicaciones pueden encontrar dificultades para conectarse a una base de datos alojada en un servidor que no sea el servidor local. En este artículo, resolveremos un error común que ocurre al conectarse a una base de datos MySQL de forma remota desde fuera de la red o desde otro host.
SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server
El error ocurre cuando el servidor MySQL rechaza la solicitud de conexión.
Para habilitar las conexiones remotas, debemos realizar los siguientes pasos:
- Habilitar conexiones remotas desde la configuración
- Cree un nuevo usuario y permita que se conecte al servidor de la base de datos desde el host específico (o desde todos los hosts)
- Privilegios de vaciado
Habilitar conexiones remotas desde la configuración de MySQL
/etc/mysql/my.cnf
o /etc/my.cnf
o /etc/mysql/mysql.conf.d/mysqld.cnf
. La ubicación del archivo de configuración de MySQL depende de la versión de MySQL que esté utilizando. Verifique todas estas ubicaciones para ver si puede encontrar el archivo de configuración. Únase a nuestro servidor Discord y avísenos si aún no ha encontrado el archivo de configuración. Tal vez podamos ayudarlo.
Una vez encontrado el archivo de configuración, ábralo y comente la línea bind-address = 127.0.0.1
.
Solo agrega # antes de la línea para comentarlo.
# bind-address = 127.0.0.1
Crear nuevo usuario de MySQL
Inicie sesión en MySQL como root –
sudo mysql
Or
mysql -u root -p
Dependiendo del método que seleccione, se le pedirá que ingrese su contraseña. sudo
contraseña si está iniciando sesión con sudo
.
Una vez en la línea de comandos de MySQL, cree un nuevo usuario –
> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Reemplace 'nombre de usuario ‘ con el nombre de usuario deseado, ‘set-password ' con la contraseña segura y 'ip-address ' con la dirección IP remota en el comando anterior. Debería ver el siguiente mensaje si se crea el nuevo usuario:
Query OK, 0 rows affected (0.02 sec)
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Reemplace el nombre de usuario en el comando anterior con el nombre de usuario real. y la dirección IP con la dirección IP de la computadora remota (host). Una vez hecho esto, elimine los privilegios para que los cambios surtan efecto.
> FLUSH PRIVILEGES;
Permitir todas las conexiones remotas
Como en el comando anterior, indiqué reemplazar la dirección IP con la dirección IP de la computadora remota. Solo se permitirán conexiones desde esa computadora remota. Sin embargo, también podemos usar el comodín '%' para permitir todas las conexiones, independientemente de si son desde su computadora o desde el sótano que necesita acceso a su base de datos por motivos personales. 😉 Sin embargo, deberán ingresar las credenciales correctas para acceder a la base de datos.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
Permitir conexiones desde un rango de direcciones IP
Si los servidores remotos están en la misma red, sus direcciones IP pueden habilitarse fácilmente para permitir conexiones remotas sin la necesidad de múltiples usuarios de MySQL.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';
Observe cómo el último octeto de la dirección IP ha sido reemplazado por * en el comando anterior. Esto permite que todos los servidores con esa dirección IP comiencen con 172.19.0.