Servidor SQL con Raspberry Pi solo accesible desde área local con conectividad a Microsoft Access

Microsoft Access es un buen programa para gestionar bases de datos ya que nos permite crear fácilmente front-ends. Sin embargo, el mayor problema del que adolece es la inexistencia de una manera sencilla de compartir la base de datos con la que trabaja MS Access.

Para solucionar este problema, es posible crear una base de datos en MySQL y conectarla con MS Access, de manera que sea accesible por más de un usuario y evitar que se corrompa con facilidad. Una de las maneras que se podría implementar es contratando un servidor (Strato, One&One, etc…), pero abrir los puertos de MySQL a cualquier es potencialmente peligroso para el servidor. Por ello, intenté buscar otra solución, y esta es tener un servidor solo accesible desde una red local, por lo que los posibles atacantes no puedan acceder al servidor de ninguna manera.

La manera más sencilla y barata de montar un servidor en casa es utilizando una Raspberry Pi, en la que instalaremos el sistema operativo Raspbian y sobre el cual vamos a hacer las siguientes configuraciones.

Para empezar, necesitamos conectarnos con la Raspberry mediante SSH, por lo que necesitaremos conocer cuál es su dirección IP dentro de la red. Existe una utilidad para Linux llamada arp-scan con la que podremos ver las direcciones IP de todos los dispositivos de la red:

sudo arp-scan --localnet -interface=wlan0

Una vez hayamos localizado nuestra Raspberry y nos hayamos conectado con ella mediante SSH, hay que configurar la asignación de IP’s para estar seguros de que la dirección no va a cambiar cada vez que la enchufemos. Existen cientos de tutoriales que explican cómo hacerlo, por lo que no lo explicaré.

Una vez ya tengamos la Raspberry con una IP estática, vamos a montar el servidor MySQL.

sudo apt-get install mysql-server mysql-client libmysqlclient-dev

Esto requerirá 11.6 MB para archivos + 99.4 MB de espacio adicional. Durante la instalación nos pedirá que introduzcamos la contraseña para el usuario root de MySQL.

Una vez esté instalado vamos a acceder a MySQL de escribiendo el comando:

mysql -u root -p

Una vez estemos en el shell de MySQL, tan solo tendremos que crear la base de datos que queramos:

CREATE DATABASE database_name

Alternativamente, si lo que queremos es importar una base de datos previamente creada, podemos hacer login en MySQL de la siguiente manera:

mysql -u root -p database_name < /path/to/database.sql

Para comprobar que la base de datos se ha creado correctamente, lo más sencillo y cómodo es verlo mediante PHPMyAdmin. Para instarlo:

sudo apt-get install phpmyadmin
sudo php5enmod mcrypt
sudo service apache2 restart

Cuando esté todo configurado e instalado, podemos acceder a PHPMyAdmin poniendo en el navegador la direccion: ip-raspberry/phpmyadmin (e.g. 192.168.1.23/phpmyadmin)

Ahora ya solo queda utilizar la utilidad de MySQL llamada ODBC Driver (Open Data Base Connector) para enlazar la base de datos de MS Access con la que acabamos de crear en MySQL. Para ello podéis seguir los pasos que explican desde la web oficial.

Entradas relacionadas

6 comentarios en «Servidor SQL con Raspberry Pi solo accesible desde área local con conectividad a Microsoft Access»

  1. Hola Rubén, gracias por el tuto, se ve fácil.
    Estoy con un proyecto en VB2015 y una BD Access. Esta aplicación será compartida por varias personas desde varios lugares, para que la BD esté siempre actualizada, he pensado colgarla en una Raspberry pi y que desde la aplicación local en cada PC se acceda a dicha BD.
    La cadena de conexión desde LAN no es problema, puedo apuntar a la BD sin problemas pero no lo consigo desde Internet.
    Crees que con el sistema que comentas será más fácil?
    Te agradezco cualquier orientación.
    Gracias. Luis.

    1. Hola Luis,
      Pues efectivamente esta entrada pretendía solucionar precisamente el mismo problema. Aprovechando que una base de datos SQL es más sencilla de mantener desde GNU/Linux y permitiendo la conexión remota, aunque faltaría instalar un servicio de DNS dinámica para obtener la IP de la raspberry en todo momento, poder acceder a la BD y poder modificarla. Las DNS dinámicas son muy sencillas de configurar y existen servicios gratuitos que funcionan perfectamente.

      Espero haberte ayudado.

      Saludos,
      Rubén

      1. Hola Rubén, perdona he estado fuera.
        Gracias por tu rápida respuesta.
        Ya tengo instalado el MySQL y desde LAN accedo sin problemas con ip raspy/phpmyadmin , voy a ver la conexión con ODBC, a ver si soy capaz de acceder desde el exterior.
        He abierto el puerto xxxx en el router apuntando a la Raspy, se me queda algo atrás?
        Gracias otra vez.
        Saludos.

        1. Hola Luis,

          pues si tu router es capaz de realizar correctamente el reenvío de puertos, parece que está todo listo para realizar la conexión con ODBC.

          Sin embargo, recuerda que para acceder desde el exterior de tu red local, es necesario que conozcas la IP pública de tu casa/empresa. La IP pública que el ISP asigna a cada usuario suele cambiar cada poco tiempo, por lo que es necesario tener un servicio de seguimiento de IP pública, que usualmente se suele conocer como Dynamic DNS. Con un programa específico instalado en tu Raspberry, este conecta de manera periódica con un servidor de DNS dinámica (existen varios gratuitos disponibles). Este servidor almacenará la IP desde la que está siendo contactado para proporcionar un dominio más fácil de recordar que estará apuntando siempre a la IP pública de tu casa/empresa.

          Por ejemplo: rubensm.dyndns.com apuntará a 152.156.42.45. Cuando mi ISP cambie la IP pública de mi router rubensm.dyndns.com apuntará a esta nueva dirección 152.156.34.132.

          De esta manera, no es necesario saber continuamente la IP pública de tu router.

          Espero haberte ayudado.

          Saludos,
          Rubén

          1. Hola Rubén, no consigo conectar ni en LAN.
            Para no llenarte el blog de comentarios y preguntas de principiante que no ayudaran a nadie, si te parece, lo hacemos por email.
            Gracias.
            Saludos.

Responder a Luis Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.