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.