Por norma general, la mayoría de servidores tan solo permiten que las conexiones a MySQL se realicen en local, es decir, desde el mismo servidor Cloud y no desde un servidor o equipo externo.
En los “setups” en los que es necesario configurar MySQL en un servidor aparte, para no sobrecargar el frontal web por ejemplo, se tienen que llevar a cabo algunas configuraciones para poder conectar de forma remota a las bases de datos.
A continuación explicamos los pasos a seguir para configurar este acceso:
- Accede a tu servidor a través de SSH como usuario “root” Información adicional Puedes encontrar más información sobre el acceso por SSH a tu servidor en el artículo: Acceder por SSH a Linux
- Tienes que darle privilegios de acceso remoto a la base de datos que quieras que sea accesible utilizando los siguientes comandos:
Nota
Recuerda que antes de lanzar el comando tienes que cambiar:
- “xxx.xxx.xxx.xxx“, por la IP que tendrá acceso a las bases de datos
- “nombre_base_de_datos” por el nombre de la base de datos en cuestión
- “usuario_base_de_datos” por el usuario que hará la conexión
# mysql -u root -p mysql> USE mysql; mysql> update db set Host='xxx.xxx.xxx.xxx' where db=’nombre_base_de_datos‘; mysql> update user set Host='xxx.xxx.xxx.xxx' where user=’usuario_base_de_datos‘
Una alternativa a configurar manualmente los privilegios a cada base de datos como hemos descrito, sería configurarlos para todas las bases de datos.
Advertencia
Puede suponer un grave problema de seguridad garantizar privilegios sobre todas las bases de datos al usuario root del servidor remoto. En la mayoría de casos será mejor crear un usuario con menos privilegios y que pueda acceder solo a la base de datos necesaria para la conexión.
Para configurar los privilegios en todas las bases de datos habría que utilizar los siguientes comandos:
mysql> GRANT ALL ON *.* to root@'xxx.xxx.xxx.xxx' IDENTIFIED BY ‘contraseña_de_root‘; mysql> FLUSH PRIVILEGES; mysql> exit;
- Puede ser que nuestro servidor tenga configurado el servicio de MySQL escuchando solo por la IP 127.0.0.1 (Binding), para comprobarlo ejecutaremos:
# netstat -tulpn | grep 'mysql\|mariadb'
Si nos responde “0.0.0.0:3306” puedes pasar al siguiente paso. Si nos responde “127.0.0.1:3306” hay que cambiar la configuración de MySQL para ello editaremos el fichero /etc/mysql/my.cnf o /etc/my.cnf dependiendo la distribución de Linux que usemos. Básicamente comentaremos la linea que configura el binding, puede ser algo similar abind-address = ::ffff:0.0.0.0
Una vez comentado reiniciaremos el servicio de MySQL y ya podemos pasar al siguiente paso.# service mysqld restart
- Finalmente, lo que deberás hacer es habilitar el puerto 3306 en el firewall del panel de cliente, has de crear una regla como esta: