martes, 2 de julio de 2013

Conectar mysql de manera remota

Cuando tratamos de conectar a un servidor MySQL y obtenemos el ERROR 1130 (HY000): Host ‘x.x.x.x’ is not allowed to connect to this MySQL server imaginamos que algo habrá que configurar en el server MySQL para permitir el acceso remoto a un cliente MySQL, exactamente eso, a nuestro servidor MySQL tenemos que decirle como, desde donde y quien puede acceder a que bases de datos configuradas en el servidor MySQL. Para los novatos como yo, este es el error de conexión que obtenemos si tratamos de conectar de forma remota a nuestro server MyQSL sin configurar:


hnoguera@cliente:~$ mysql -h 10.0.0.143 -u cliente -p
Enter password: 
ERROR 1130 (HY000): Host '10.0.0.15' is not allowed to connect to this MySQL server

Nota: si tratamos de acceder incluso desde el propio server MySQL a la consola de MySQL usando como destino de conexión la IP de cualquiera de las interfaces de red de servidor la respuesta será la misma. Con la configuración por defecto del servidor MySQL solo podremos acceder en modo local y apuntando a localhost o 127.0.0.1.

Estos son los pasos para habilitar la conexión remota desde un cliente determinado:

  1. Entramos como root en el server MySQL, damos de alta un nuevo usuario con el nombre que queramos usar con el cliente remoto al que le damos acceso a una o varias de las bases de datos que haya creadas en el servidor MySQL, desde una IP de cliente determinada y con un password definido para el usuario a crear:

    hnoguera@cliente:~$ mysql -h localhost -u root -p
    Enter password: 
    mysql> GRANT SELECT, INSERT ON bdd.* TO 'nuevo_usuario'@'10.0.0.15' IDENTIFIED BY 'pass' ;
    Query OK, 0 rows affected (0.00 sec)

    Nota: Acabamos de crear el usuario llamado “nuevo_usuario” y le hemos dado permisos de selección e inserción (SELECT, INSERT) a todas las tablas de la base de datos llamada “bdd” (bdd.*) desde la IP remota “10.0.0.15″ y con el password “pass”. En cuanto a los privilegios dados al usuario podemos elegir los que necesitemos -> tabla de privilegios que provee MySQL

    Con el comando anterior se hacen todos los pasos a la vez, se crea el usuario con el password especificado, se le dan permisos de acceso y se especifica una IP desde la que ese usuario se podrá conectar de forma remota, pero esto no es todo para poder acceder de forma remota al server MySQL.

  2. Lo siguiente es cambiar la configuración del archivo de configuración mysql que está en /etc/mysql/my.cnf, y en la línea 47 tenemos:

    bind-address = 127.0.0.1

    En este parámetro se configura la IP de la interfaz local de escucha del servidor MySQL, por defecto la escucha se hace solo como localhost así que para que podamos acceder desde cualquier IP que tenga el servidor configurada necesitaremos cambiar la línea anterior por:

    bind-address = 0.0.0.0

    Nota: no es posible poner más de una IP como dirección de escucha así que no podemos configurar por ejemplo solo 2 de las 3 interfaces de red de nuestro server, serán o todas o solo una de ellas.

  3. Ahora solo el servidor MySQL:

    root@LAMP-squeeze:~# /etc/init.d/mysql restart
    Stopping MySQL database server: mysqld.
    Starting MySQL database server: mysqld.

  4. Y probar que todo funciona correctamente desde el cliente habilitado:

    hnoguera@cliente:~# mysql -h 10.0.0.143 -u nuevo_usuario -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 36
    Server version: 5.1.49-3 (Debian)
    
    Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
    This software comes with ABSOLUTELY NO WARRANTY. This is free software,
    and you are welcome to modify and redistribute it under the GPL v2 license
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>

No hay comentarios:

Publicar un comentario