Autore Topic: [RISOLTO] mysql in localhost o remoto?  (Letto 1077 volte)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
[RISOLTO] mysql in localhost o remoto?
« il: 03 Agosto 2012, 19:04:19 »
scusate il titolo ma non  mi veniva altro.
Ho questo problema e non saprei che soluzione adottare:

Ho un PC1 dove risiede un database mysql DB1, il PC1 dispone di un dyndns per ovviare al problema dell'ip dinamico.

Ho un software gestionale SW1 che punta al DB1.

SW1 a lo uso da PC1 ma anche da PC2 .... PC3 .....PCN

da PC2 in poi potrei trovarmi nella stessa rete oppure collegarmi ad DB1 da internet. In entrambi i casi usando come connessione localhost quando sono in rete, mionome.dyndns.org quando sono in internet SW1 funziona.

Come posso verificare da SW1 se sono in locale o no per poi eseguire la connessione opportuna? Per ora mi viene in mente solo di provare con localhost, se la risposta è negativa provare con dyndns, se la risposta è ancora negativa il problema è un altro
« Ultima modifica: 23 Agosto 2012, 08:23:08 da doublemm »
Matteo DoubleMM Mion

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #1 il: 03 Agosto 2012, 23:00:14 »
Codice: gambas [Seleziona]
Dim sMysql as string
...
Exec ["netstat -ln | grep mysql"] to sMysql
If (InStr(lower(sMysql),"mysql") > 0) Then
   'localhost
else
   'remoto
EndIf
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #2 il: 04 Agosto 2012, 15:43:46 »
grazie
Matteo DoubleMM Mion

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #3 il: 18 Agosto 2012, 21:52:03 »
il problema è un po cambiato. Il server mysql si trova in un pc PCin1. il software programmato con gambas deve poter girare sulla rete di PCin1 supponiamo 192.168.1.1/255 oppure su un qualsiasi PCoutN che punta a Mysql tramite un nome.dyndns.org. Come posso fare per capire se mi trovo in rete con il server o provengo dall'esterno? All'inizio avevo pensato ad analizzare la risposta di ping su l'ip del server, se negativa allora sonopotrei essere fuori dalla rete e quindi provo con dyndns. Solo che ping vuole sudo quindi dovrei pensare a tutta la procedura per passargli la pass cosa che vorrei evitare. Avete qualche idea?
Matteo DoubleMM Mion

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #4 il: 18 Agosto 2012, 23:01:28 »
ciao, forse non ho capito niente e stò per dire una str...
se sei connesso non puoi vedere con "connessione.host" ?

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #5 il: 19 Agosto 2012, 08:28:33 »
In un ambiente come quello che descrivi ci sarà sicuramente un Network Manager. Quindi potresti, al primo avvio del programma, chiedere all'utilizzatore l'indirizzo del server MySQL; indirizzo che andrai a salvare in un file di configurazione.

Solo che ping vuole sudo
Che distro usi (Debian)?
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #6 il: 21 Agosto 2012, 13:11:48 »
uso Ubuntu.

@Golia
Intehndevo per connettermi a mysql ho 2 strade, se sono al lavoro dove risiede il server con mysql la mia connessione.host sarà l'ip del pc dove risiede mysql server, se mi trovo altrove punto al server tramite nome.dyndns.org poi ci pensa il router ad indirizzare la porta sull'ip del server.

@Sotema
Sicuramente la soluzione è molto semplice ma non so metterla in pratica, avevo pensato ad una cosa del genere:
SOLUZIONE 1
provare a connettermi all'indirizzo ip, se la connessione non avviene provare con il dyndns se ancora non si connette vuol dire che il problema è un altro (tipo manca la connessione ad internet). con questa soluzione però il sistema si blocca quando l'host è sbagliato ad aspettare una risposta su connessione.open e non va più avanti.

SOLUZIONE 2
provare un comando da shell e in base alla risposta capire se devo usare l'ip ol il dns però no so che comando potrei usare
Matteo DoubleMM Mion

Offline sotema

  • Maestro Gambero
  • ****
  • Post: 467
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #7 il: 21 Agosto 2012, 18:28:53 »
uso Ubuntu.

Il ping su Ubuntu non necessita di sudo. Ma in ogni caso non credo il ping ti sia utile. Probabilmente nmap sarebbe più adatto allo scopo.

La tua idea di tentare la connessione con i due indirizzi possibili non è poi sbagliata, visto che se comprendo bene, il problema sta nel connettere il tuo portatile al server; il fatto che ti si blocca in Connessione.Open se non trova l'host è dovuto alla mancanza di una gestione dell'errore.
Prova a sostituire Connessione.Open con TRY Connessione.Open ed inserirsci un controllo sull'errore.
L'uomo ha inventato la bomba atomica, ma nessun topo al mondo costruirebbe una trappola per topi.
Albert Einstein

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: mysql in localhost o remoto?
« Risposta #8 il: 23 Agosto 2012, 08:22:43 »
ok ho risolto, avevo commesso un errore usando il try, per gestire l'errore usavo catch mentre adesso con if error ho risolto.

Codice: [Seleziona]
Try Connections["Conn1"].Open
     
      If Error Then
        PictureBox1.Picture = immagineNO.Picture
        Label1.text = "DATABASE NON CONNESSO"
        Continue
      Else     
        PictureBox1.Picture = immagineSI.Picture
        Label1.text = "DATABASE  CONNESSO"
        Connections["Conn1"].Close
        Break
      Endif

GRAZIE!!!  :ok:
Matteo DoubleMM Mion