CONFIGURARE ACCESSO A DB da remoto

di il
7 risposte

CONFIGURARE ACCESSO A DB da remoto

Ciao a tutti,

problema da neofita: per uso personale/accademico (almeno per ora) ho installato su un PC che ho in casa una versione di Ubuntu Server(lo so mi voglio bene ) su cui ho installato MariaDB (ma con MySQL credo sia medesimo il problema)
Lo scopo specifico, o per lo meno è il primo progetto per cui lo vorrei implementare, è quello di fungere da database per un applicativo Android (anche se poi non è obbligatorio; pure fosse un sito o un app in Python il quesito regge).
Ora, punto 1, il mio problema è "il come si fa" a far interagire un app su mobile con un database in remoto.
L'app è banale, 2 funzioni: la prima è un form che compilo con una rubrica (anagrafica di persone o libri) e salvo il record sul DB, la seconda è un form di ricerca secondo qualsivoglia parametro (tipo per titolo libro o cognome).
Quello che sto cercando di mettere appunto è la parte di comunicazione tra app e DB.
E qui la parte difficile, ovvero quella che concerne la mia ignoranza: come accedo da un app al DB sul server che ho in casa?
On line ho trovato diverse cose:
- configuro una connessione ssh usando l'IP pubblico del mio server, ma il risultato è un accesso da remoto al SO più che un' "oggetto" atto all'accesso del DB per sottoporgli delle query.
- configuro un web socket per la comunicazione client/server; ma qui si entra a parlare di web server e protocollo HTTP, che mi pare di aver capito servano più ai siti internet che al mero data storage. (un db non ha un indirizzo web o si?)
- altro?

Punto due, la configurazione dei "connettori"(ammetto che è una risposta di @migliorabile ):
a) ti serve configurare il router affinche' si registry su uno di quei DNS gratuiti o, in alternativa, installi un software che scarichi da questi siti direttamente sul PC (dyndns, noip, ...). Questo serve perche' l'IP pubblico puo' cambiare ad ogni riavvio del router. Questi software ti permettono di assegnare un nome al tuo IP pubblico .

b) devi configurare il router in modo che le richieste di accedere al tuo IP pubblico ed ad una certa porta (nel caso di MYSQL e' la 3306) vengano dirottate verso il PC contenente MYSQL (IP e relativa porta)

A questo punto il tuo DB e' accessibile da Internet all'indirizzo del IP pubblico del tuo router (ad esempio 86.123.43.12, ovviamente non del tuo PC, che si trova all'interno della rete locale gestita dal router e quindi ha un IP locale, tipo 192.168.0.23) e relativa porta.



Configurato ciò lato server, serve altro per perchè un app possa accedere puntando, con una funzione tipo .connect e cursore annesso, una query sul mio db sito sul mio server?

Grazie

7 Risposte

  • Re: CONFIGURARE ACCESSO A DB da remoto

    L'app non deve accedere al database, in quanto la connessione a DB non è generalmente una operazione adatta a device come quelli mobili che hanno una connessione di rete estremamente fallace, che può cadere (e cade pure) generalmente spesso.

    I dati vanno messi "in mobilità". E' necessario quindi predisporre una Web API, anche semplice, che riceva richieste dall'app, ossia dal client, e acceda in sicurezza e stabilità al database per eseguire le operazioni richieste.

    In assenza di questo scenario, sono solo errori, problemi e funzionalità non corrette.
  • Re: CONFIGURARE ACCESSO A DB da remoto

    Oro, quindi niente accesso diretto al DBMS ma cmq al server....

    Quindi l'idea è di installare un DBMS sul server (fatto), scrivere una API sul server (una piccola app interna che resta in ascolto su una data porta quando il server è acceso) che riceve (POST) i dati input dall'app e li salvi (PUT) sul DB e restituisca (GET) le query di ricerca all'app. Corretto?

    Resto punto a capo con il modo con cui l'app si debba connettere da remoto al server; se non al DBMS in via diretta cmq alla porta su cui ascolta l'API...ossia all'indirizzo pubblico IP+porta ? Un socket?
  • Re: CONFIGURARE ACCESSO A DB da remoto

    Esattamente: ip/porta/socket

    SOLO che:

    1) NON l'ip MA un nome di dominio, tipo 'spinneys.homeip.net'
    Il dominio 'homeip.net' viene fornito dal sito DyDns
    https://account.dyn.com

    oppure puoi usare 'noip'
    https://www.noip.com

    2) la porta nel 99.999% dei casi e' la 80

    3) si usa un server HTTP, che USA una socket, MA che usa anche il protollo di comunicazione HTTP.
    In particolare, quello che ti serve e' un 'server RESTful' che fornisce 'web services' basati si REST.

    https://it.m.wikipedia.org/wiki/Web_servic

    ----
    ci sono librerie gia' pronte che forniscono il 90% delle funzionalita' base.
  • Re: CONFIGURARE ACCESSO A DB da remoto

    Direi meglio https
  • Re: CONFIGURARE ACCESSO A DB da remoto

    spinneys ha scritto:


    Resto punto a capo con il modo con cui l'app si debba connettere da remoto al server; se non al DBMS in via diretta cmq alla porta su cui ascolta l'API...ossia all'indirizzo pubblico IP+porta ? Un socket?
    Qualunque sistema operativo, mobile e non, pure quello dei frigoriferi, ormai è in grado di fare nativamente (con funzioni già disponibili) ciò che realmente ti serve, ossia una chiamata HTTP(S) per colloquiare con l'endpoint che la tua Web API mette a disposizione per le operatività di cui abbiamo già parlato e che hai pure brillantemente riassunto.

    Ad esempio, potrebbe trattarsi di una Web API RESTful: cosa indichi questo termine lo trovi definito in questo articolo accademico sul Maturity Model di Martin Fowler. Sembra complesso ma, in realtà, ti accompagna con esempi abbastanza calzanti e intuitivi alla definizione delle caratteristiche che dovrebbe avere una API REST al 100%, poi ovviamente il livello, l'accuratezza e la ricchezza della tua API, soprattutto se assogettata a esigenze custom (da non fornire a terzi, per il momento), è modellabile totalmente sui tuoi gusti personali.

    Ciao!
  • Re: CONFIGURARE ACCESSO A DB da remoto

    Grazie a tutti; ora sono a caccia del "come farlo", ho visto interessanti librerie e frameworks in diversi linguaggi (nel mio caso python), quasi sicuro che tornerò sull'argomento dato che tutti i tutorial esemplificano con un backend del browser in php per siti internet e non in tema di app android ma sopratutto, per semplicità, lavorano in locale perciò avrò bisogno di consigli sul come installare l'api sul server e renderla attiva quando la macchina è accesa e viceversa creare chiamate http/https da un app in remoto.
  • Re: CONFIGURARE ACCESSO A DB da remoto

    Rieccomi con qualche aggiornamento (ho studiato abbastanza ma mi ci vorrebbe un tutor bravo )

    migliorabile ha scritto:


    Esattamente: ip/porta/socket

    SOLO che:

    1) NON l'ip MA un nome di dominio, tipo 'spinneys.homeip.net'
    Il dominio 'homeip.net' viene fornito dal sito DyDns
    https://account.dyn.com

    oppure puoi usare 'noip'
    https://www.noip.com

    2) la porta nel 99.999% dei casi e' la 80
    FATTO! Ho impostato il router, o almeno credo. Ho inserito l'ip pubblico nel router, ho reindirizzato l'IP locale nell'indirizzamento porte dell'IP PUBBLICO...e ora?


    come lo pingo da un host esterno su una commessione diversa per verificare che il tutto funzioni?

    migliorabile ha scritto:


    3) si usa un server HTTP, che USA una socket, MA che usa anche il protollo di comunicazione HTTP.
    In particolare, quello che ti serve e' un 'server RESTful' che fornisce 'web services' basati si REST.

    https://it.m.wikipedia.org/wiki/Web_servic

    ----
    ci sono librerie gia' pronte che forniscono il 90% delle funzionalita' base.
    Cosa intendi per "server RESTful"? Tipo Apache va bene?
    Allegati:
    29290_5245ed7114736a232c554679712ed003.jpg
    29290_5245ed7114736a232c554679712ed003.jpg
Devi accedere o registrarti per scrivere nel forum
7 risposte