Por defecto, cuando instalamos MariaDB solo permite recibir datos de localhost por lo que si intentamos enviar datos remotamente desde otro equipo rechazará la conexión:
pi@pi4:/etc/mysql $ netstat -anp | grep 3306
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
Por ejemplo, intentamos enviar los datos de temperatura y humedad de una Raspberry a un servidor con MariaDB. En este caso, nos rechazará la conexión ya que solo está escuchando las conexiones que se realizan en la misma maquina:
pi@pi3:~/scripts/temperatura/examples $ python3 enviardatosRP4.py 22 4
Temp=14.5* Humidity=90.4%
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mysql/connector/network.py", line 529, in open_connection
self.sock.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused
Para solucionar esto deberemos comentar la línea «bind-address= 127.0.0.1» del fichero «/etc/mysql/mariadb.conf.d/50-server.cnf«;
Reiniciamos el servicio:
/etc/init.d/mysql restart
Comprobamos que ya está abierto el puerto a todas las conexiones:
pi@pi4:/etc/mysql/mariadb.conf.d $ netstat -anp | grep 3306
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::3306 :::* LISTEN -
En este momento, si ejecutamos de nuevo la inserción de datos desde la otra Raspberry se aceptará la conexión y se recibirán correctamente en la base de datos:
pi@pi3:~/scripts/temperatura/examples $ python3 enviardatosRP4.py 22 4
Temp=14.5* Humidity=90.3%
1 record inserted.
Comprobamos que se han insertado correctamente los datos en la tabla: