Recibir datos en MariaDB de otros equipos en Linux

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: