mysql - remote - raspberry open port 3306
¿Cómo abro mi MySQL en mi Raspberry Pi para conexiones externas/remotas? (3)
Tengo una Raspberry Pi que almacena datos de temperatura para la actividad de cervecería casera. Estoy haciendo una aplicación Spring MVC en mi computadora y quiero tocar los datos. Tanto mi Pi como mi computadora están en la red local. Puedo SSH y FTP en mi RPi perfectamente.
mysql --192.168.1.102 --u root -p db
Causa "No se puede conectar con el servidor MySQL en ''192.168.1.102''".
Mi aplicación Java tampoco se conecta, obviamente.
SHOW VARIABLES WHERE VARIABLE_NAME = ''port'' ;
devuelve el puerto predeterminado, 3306.
¿Hay alguna configuración que deba habilitarse para permitir conexiones remotas a MySQL?
Recientemente tuve el mismo problema. Lo hice funcionar haciendo lo siguiente:
Edita la configuración de MySQL
Por defecto, MySQL no está configurado para aceptar conexiones remotas. Puede habilitar conexiones remotas modificando el archivo de configuración:
sudo nano /etc/mysql/my.cnf
Encuentra la sección [mysqld]
. La línea que debe modificar es bind-address
, que debe establecerse en el valor predeterminado de 127.0.0.1
. Desea editar esta línea para mostrar la IP de su RPi en la red (que parecería ser 192.168.1.102 de su ejemplo). Escribe los cambios.
Reiniciar el servicio MySQL
sudo service mysql restart
Configurar permisos de MySQL
Conéctese a su instancia de MySQL como root:
mysql -p -u root
Crear un usuario:
CREATE USER ''<username>''@''<ip_address>'' IDENTIFIED BY ''<password>'';
- Los apóstrofos ('') en la sintaxis son obligatorios
- La dirección IP es la dirección IP del dispositivo en la red desde la que intenta conectarse
Conceder permisos a las bases de datos y tablas relevantes:
GRANT ALL PRIVILEGES ON <database>.* TO ''<username>''@''<ip_address>'' IDENTIFIED BY ''<password>'';
- Los parámetros son los que utilizó para crear su usuario en el paso anterior
- El * otorgará acceso a todas las tablas dentro de la base de datos especificada. Alternativamente, puede especificar una tabla específica
- Probablemente quieras reforzar la seguridad solo otorgando privilegios relevantes, pero eso debería ser suficiente para probar que funciona
¡Eso debería hacerlo con suerte!
Lo siguiente funcionó para mí, cortesía de un comentario encontrado en este instructivo:
- Otorgue acceso a su máquina remota usando:
GRANT ALL ON *.* TO ''root''@''192.168.1.%'' IDENTIFIED BY ''your_password_here'';
(Usé 192.168.1.% Para que cualquier computadora de mi red pueda conectarse) - Vaya al archivo my.cnf (
sudo nano /etc/mysql/my.cnf
) y busque "bind-address" y comente esto (ponga un # delante de la línea) - Recargar la configuración de MySQL (
service mysql reload
) - Reiniciar el servidor MySQL (
service mysql restart
)
Si su problema no es posible conectarse remotamente con MySQL en Raspberry Pi, entonces pruebe los siguientes pasos. Tuve el mismo problema y lo resolví ejecutando los comandos siguientes.
1) sudo nano /etc/mysql/my.cnf
2) # bind-address = 127.0.0.1
// comentar esta línea
bind-address = 0.0.0.0 //add this line just below above line
3) sudo /etc/init.d/mysql restart
// reiniciar mysql
4) sudo mysql -u root -p
// iniciar sesión en mysql cli como usuario ''root''
5) GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''beta'' WITH GRANT OPTION;
Aquí ''root'' es el usuario de mysql y ''beta'' es la contraseña y aquí los privilegios están establecidos para ''root''. Cámbialo en consecuencia y ejecuta la consulta anterior en mysql cli.
Buena suerte !!!