sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo acceder a un servicio web de base de datos MySQL a través de LAN?

Si se trata de MySQL, la red del servidor de la base de datos no está habilitada de forma predeterminada. Para habilitar la red en MySQL necesita encontrar el archivo de configuración de MySQL activo llamado my.cnf . Y edítalo.

Voy a explicar cómo hacer esto en Ubuntu 12.04, pero las instrucciones son similares para la mayoría de las instalaciones de Linux.

Habilitar redes MySQL

Primero, abra el archivo usando un editor como nano . Es posible que deba ejecutar el comando a través de sudo :

sudo nano /etc/mysql/my.cnf

Luego busque el área en su archivo de configuración con bind-address opción:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

Ahora cambia esa bind-address configurando lo siguiente:

bind-address            = 0.0.0.0

Una vez hecho esto, guarde el archivo y reinicie MySQL así:

sudo service mysql restart

Y ahora su base de datos MySQL podrá tomar conexiones no locales de máquinas remotas.

Asegúrese de que el puerto MySQL 3306 está abierto

Dicho esto, incluso con la red habilitada, aún debe verificar si puede conectarse a la máquina remota desde la línea de comando usando una herramienta de red como nmap . Es posible que tenga un cortafuegos en 192.168.1.10 bloqueando el puerto MySQL 3306 por lo que debe verificar si está abierto o cerrado de esta manera:

nmap 192.168.1.10 -p3306

Y si puerto 3306 está abierto, esta será la respuesta; tenga en cuenta el open en STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE SERVICE
3306/tcp open  mysql

Pero si el puerto 3306 está cerrado, obtendrá esto; tenga en cuenta el closed en STATE :

Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT     STATE  SERVICE
3306/tcp closed mysql

Verifique sus concesiones de usuario de MySQL

Ahora, con todo eso hecho, su servidor de base de datos MySQL debería estar accesible en la red. Pero dicho esto, debe asegurarse de que el usuario de la base de datos que está utilizando pueda conectarse desde una máquina remota en su LAN. Así que inicie sesión en MySQL y ejecute este comando para ver qué subvenciones podría tener el usuario:

SELECT user, host FROM `mysql`.`user`;

Esto le mostrará una lista de usuarios y hosts conectados a esos usuarios en MySQL. La cuestión es que a la mayoría de los usuarios solo se les otorgan privilegios de acceso a localhost o 127.0.0.1 . A algunos se les otorga el host comodín de % . Debe mirar esa lista y ver si el usuario que desea usar tiene un host comodín (% ) o una dirección IP específica conectada a ellos. Puede verificar el GRANT de un usuario s ejecutando una línea como esta; por supuesto, cambia [your_database_user] y [hostname] para que coincida con su configuración:

SHOW GRANTS FOR '[your_database_user]'@'[hostname]';

Eso debería mostrarle una lista de GRANT disponibles s para un usuario en un host específico. Si tienen GRANT s que permitirían el acceso remoto, como usar el comodín % anfitrión, entonces ya está todo listo. Si no tienen ningún GRANT s puede ejecutar los siguientes comandos de MySQL; por supuesto, cambia [your_database] y [your_database_user] para que coincida con su configuración:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;

Ambos GRANT Las líneas aplican un conjunto bastante estándar de derechos de acceso a una base de datos. La primera línea los aplica a cualquier conexión en el rango de red LAN de 192.168.x.x . La segunda línea los aplica a cualquier conexión en el rango de red LAN de 10.x.x.x . Me gusta hacer eso para cubrir todas las bases en las redes internas. Los últimos FLUSH PRIVILEGES; básicamente le dice a MySQL que vuelva a cargar las tablas de privilegios de usuario que permiten que esas concesiones surtan efecto.