Bajo circunstancias normales, los servidores solamente permiten que las conexiones a MySQL se realicen en forma local, es decir, que las conexiones se realicen desde el servidor mismo y no desde un server o equipo externo.
Si necesitas correr MySQL en una máquina aparte (para no sobrecargar el servidor por ejemplo), o si simplemente necesitas conectarte en forma remota, entonces aquí te mostraremos cómo permitir estas conexiones.
Primero que nada debemos ingresar a nuestro servidor por medio de SSH.
Una vez estamos dentro (como root), toca darle privilegios de acceso remoto a la base de datos con la cual trabajaremos. Por ejemplo:
# mysql -u root -p mysql> update db set Host=’111.11.11.1‘ where db=’nombre_bd‘; mysql> update user set Host=’111.11.11.1‘ where user=’usuario_bd‘; |
Lo que hicimos en la primera sintaxis fue ingresar en la subconsola de MySQL con privilegios de root de MySQL, para lo cual necesitamos dicha contraseña por supuesto. En la segunda línea hay que reemplazar «111.11.11.1» por la IP correspondiente que tendrá acceso. También hay que reemplazar «nombre_bd» por el nombre de la base de datos en cuestión. Finalmente, volvemos a indicar la IP y cambiamos «usuario_bd» por el usuario que hará la conexión.
Como alternativa, en el caso de que quieras acceso remoto para todas las bases de datos:
mysql> GRANT ALL ON *.* to root@’111.11.11.1‘ IDENTIFIED BY ‘contraseña_de_root‘; mysql> FLUSH PRIVILEGES; mysql> exit; |
Aquí lo que hacemos es garantizar privilegios sobre todas las bases de datos al usuario root del servidor remoto. Aunque nunca es conveniente hacerlo, generalmente es mejor crear un usuario con menos privilegios y que pueda acceder solo a la base de datos necesaria para la conexión.
Finalmente, lo que hay que hacer es habilitar el puerto 3306 en Iptables. Una sintaxis sencilla para hacerlo es:
# /sbin/iptables -A INPUT -i eth0 -p tcp –destination-port 3306 -j ACCEPT |
Guardamos los cambios:
# service iptables save |
Ahora ya deberías poder conectarte en forma remota sin problemas.
Muchas gracias por compartir esta información, tengo una duda:
# mysql -u root -p
mysql> update db set Host=’111.11.11.1‘ where db=’nombre_bd‘;
mysql> update user set Host=’111.11.11.1‘ where user=’usuario_bd‘;
mi duda es, para revertir ese código, o para quitar eso, cual es el comando?
que debo hacer?
gracias
manda error al tratar de abrir el puerto 3306