lunes, 14 de octubre de 2013

Linux - Conexion Remota en MySQL

En este manual les voy a explicar como habilitar la conexión remota para nuestro usuario root en MySQL.
Esto es aplicable para nuestros servidores locales o servidores dedicados. Normalmente los servicios de Hosting lo tienen deshabilitado y no se puede utilizar. Tan solo nos permiten gestionar mediante PhpmyAdmin.

Linux - Conexion Remota en MySQL

En mi caso tengo un servidor montado con Debian y necesito gestionar la base de datos remotamente mediante SQLyog, MySQL Browser Query y otros.

Lo primero que debemos hacer es editar el archivo: /etc/mysql/my.cnf. Debemos hacerlo desde la consola y como root, ya que es un archivo protegido. Abrimos el terminal y logueamos como root.
Ahora escribimos:
nano /etc/mysql/my.cnf
Con esto abrimos ese archivo con el editor. Buscamos la línea: 
bind-address = 127.0.0.1

Y la cambiamos por:
bind-address = 0.0.0.0
Y reiniciamos el servicio MySQL:
/etc/init.d/mysql restart

Con este paso ya hemos habilitado el acceso remoto al servidor. Ahora debemos dar permiso a el usuario para que pueda acceder.

Iniciamos la utilidad mysql en un Terminal del servidor donde esta instalado MySQL Server con el siguiente comando: 
mysql -u root -p

Escribimos la contraseña que nos pide del MySQL y procedemos a configurar a los usuarios para acceso remoto:
GRANT ALL PRIVILEGES ON *.* TO root@'%'; FLUSH PRIVILEGES; 

Ya tenemos el acceso y podemos conectarnos sin problemas. 


A partir de aquí explico como como conseguir una conexión más segura y describo con detalle el comando anterior.

Cabe puntualizar que no es la forma más segura de conceder el acceso. Supongamos que estamos trabajando desde una LAN y tenemos la IP 192.168.1.50 pues vamos a dar acceso solamente a esta IP con el siguiente comando:
GRANT ALL PRIVILEGES ON *.* TO root@192.168.1.50 FLUSH PRIVILEGES;
Listo, ahora solo se puede acceder desde la IP mencionada (y del mismo servidor, claro).

Vamos a rizar un poco más el rizo. Supongamos que el usuario root desde la IP 192.168.1.50 solo necesita conectarse a la base de datos llamada "clientes", pues bien, la línea es la siguiente:
GRANT ALL PRIVILEGES ON clientes.* TO root@192.168.1.50 FLUSH PRIVILEGES;

Ya lo tenemos listo. Un apunte más. La opción FLUSH PRIVILEGES, es para aplicar los cambios realizados al instante sin tener que reiniciar el servicio ni el servidor.