PDA

View Full Version : [vb6 e mysql] connessione non localhost


RaouL_BennetH
08-05-2005, 16:31
Mi sapreste dare un suggerimento su come effettuare questa cosa?

Vorrei mettere mysql su un pc indipendente, per tutti i db che ormai uso, e fare in modo che ad esempio dalle applicazioni di vb presenti su un altro pc, possa collegarmi a questi database. Fino ad ora, il server mysql e il programma giravano sulla stessa macchina. Ora invece vorrei fare in modo che mysql giri appunto su un pc indipendente. Come posso fare? Link, suggerimenti, dritte, qualsiasi cosa.

Thx.

RaouL.

RaouL_BennetH
09-05-2005, 13:09
Nel dare un piccolo up, vi indico come sto procedendo:


Private Sub cmdOK_Click()
'Verifica la validità della password

If Combo1.Text <> "" And txtPassword = "*******" Then
LoginSucceeded = True
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

With cn
.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=127.0.0.1;" & "DATABASE=Rubrica;" & "UID=root;"
.CursorLocation = adUseClient
.Open
End With


ssql = ""
ssql = ssql & "INSERT INTO ulog(user, loggin)"
ssql = ssql & "VALUES ( ' " & Combo1.Text & " ', ' " & Now & " ')"
Set rs = cn.Execute(ssql)

Inserimenti.Show

Else
MsgBox "Nome utente o password non corretti. Riprovare o terminare il programma.", , "Accesso"
txtPassword.SetFocus
SendKeys "{Home}+{End}"
End If
End Sub


Allora, con la premessa che, in quanto a sicurezza è un insulto a tale concetto :( i miei due problemi sono:

1) Funziona se sono in localhost, ma, dato che ho messo mysql su un altro pc, vorrei condividere questo db in rete tramite il server mysql.

2) Nel combo box, ho messo i nomi degli utenti, che con questo codice, vengono memorizzati in una tabella del db ("ulog") che mi dice chi si collega e a che ora. Questo però, tramite vb, ma so che mysql può gestire in maniera più efficiente i log. Mi aiutate?

Thx.

RaouL.

cionci
09-05-2005, 14:48
Basta cambiare l'indirizzo con quello della nuova macchina e metterlo al posto di 127.0.0.1...

Ovviamente non dovresti entrare come root, ma con MySQL usando l'istruzione GRANT puoi far accedere solo gli utenti da te specificati ad un dato database...in occorrenza puoi anche limitare l'accesso a questo utente in modo che possa avvenire solo dalla rete interna o solo da un dato ip...

RaouL_BennetH
09-05-2005, 15:38
Basta cambiare l'indirizzo con quello della nuova macchina e metterlo al posto di 127.0.0.1...

Ovviamente non dovresti entrare come root, ma con MySQL usando l'istruzione GRANT puoi far accedere solo gli utenti da te specificati ad un dato database...in occorrenza puoi anche limitare l'accesso a questo utente in modo che possa avvenire solo dalla rete interna o solo da un dato ip...

Difatti credo che il problema lo ho sul "GRANT" che non ho capito come si usa.

Avevo già fatto la prova a mettere l'ip del pc dove gira mysql, e avevo lasciato "root" come utente per essere sicuro che entrasse.

Approfondisco "grant".........

Thx.

RaouL.

RaouL_BennetH
09-05-2005, 16:05
Non ho capito... allora, io dovrei permettere a, diciamo per esempio, 5 indirizzi ip diversi, ciascuno con un proprio nome utente e passwd, l'accesso alla rubrica.

Con 'grant', leggo che do i privilegi solo ad un determinato utente di operare sul db. Cmq sia, ho provato a 'grantarmi', e ora ottengo un altro errore:

"ERROR 1130: Host '10.0.0.15' is not allowed to connect to this Mysq server.

:muro:

cionci
09-05-2005, 16:38
GRANT ALL PRIVILEGES ON Rubrica.* TO 'Utente1'@'10.0.0.1' IDENTIFIED BY 'password1';

Ovviamente se vuoi fare un utente per ogni macchina, ma potresti anche farne uno solo...

GRANT ALL PRIVILEGES ON Rubrica.* TO 'NomeUtente'@'10.0.0.%' IDENTIFIED BY 'tuapassword';

RaouL_BennetH
09-05-2005, 16:52
GRANT ALL PRIVILEGES ON Rubrica.* TO 'Utente1'@'10.0.0.1' IDENTIFIED BY 'password1';

Ovviamente se vuoi fare un utente per ogni macchina, ma potresti anche farne uno solo...

GRANT ALL PRIVILEGES ON Rubrica.* TO 'NomeUtente'@'10.0.0.%' IDENTIFIED BY 'tuapassword';

Fatto, ho anche riavviato il server con mysql, ma dall'altro pc non riesco comunque a connettermi.

In ordine, ho dato i privilegi all'user raoul.

Poi, nel codice ho cambiato la stringa di connessione così:



.ConnectionString = "DRIVER=(Mysql ODBC 3.51 Driver);" & "SERVER=10.0.0.12;" & "DATABASE=rubrica;" & "UID=raoul;" & "PWD=mia_pwd;"



Ho riavviato sia il server che il client, ma ottengo sempre lo stesso errore.

Di sicuro credo che la mal-configurazione sia ancora sul server.... :muro:

cionci
09-05-2005, 16:58
Hai un firewall ?

RaouL_BennetH
09-05-2005, 17:00
Hai un firewall ?

Sul pc linux dove c'è mysql, no.

Dal pc dove tento di collegarmi, che è winxp service pack2, c'è il firewall di windows, ma non credo che c'entri perchè la connessione è da winxp, non verso, o sbaglio?

RaouL_BennetH
09-05-2005, 17:33
a riprova di ciò, ho anche messo su quel server un servizio ftp e uno ssh. Dal client mi collego ad entrambi senza problemi, tenderei quindi ad escludere il problema firewall. :muro:

RaouL_BennetH
09-05-2005, 17:38
Inoltre, facendo un nmap sul serverino, la porta 3306/tcp risulta open :cry:

RaouL_BennetH
09-05-2005, 17:57
Allora, problema risolto, anche se non mi piace per niente.

Il fatto è che dovevo editare un file in /etc/mysql/my.cnf

dove era settato questo parametro:

bind-address 127.0.0.1

Leggendo l'howto, ho visto che con questo parametro settato, il server non accetta connessioni da nessuno se non da locale appunto. Mi è bastato commentarlo e far ripartire mysql e ora funziona.

Se ci sono altri suggerimenti, sono graditissimi.

Thx.

RaouL.

cionci
09-05-2005, 17:59
Mi provi a creare un utente di prova:

GRANT ALL PRIVILEGES ON Rubrica.* TO prova@'10.0.0.%' IDENTIFIED BY 'prova';

Poi scrivi:

FLUSH PRIVILEGES;

Non serve riavviare MySQL...

Poi dal PC con XP scrivi:

mysql -h 10.0.0.12 -u prova -p

Ovviamente devi prendere il client MySQL da una qualche distribuzione di MySQL...

Poi mi riporti l'errore...

RaouL_BennetH
09-05-2005, 18:10
Mi provi a creare un utente di prova:

GRANT ALL PRIVILEGES ON Rubrica.* TO prova@'10.0.0.%' IDENTIFIED BY 'prova';

Poi scrivi:

FLUSH PRIVILEGES;

Non serve riavviare MySQL...

Poi dal PC con XP scrivi:

mysql -h 10.0.0.12 -u prova -p

Ovviamente devi prendere il client MySQL da una qualche distribuzione di MySQL...

Poi mi riporti l'errore...


uh...forse abbiamo postato in contemporanea, l'errore era in quel file my.cnf, cioè, non è un errore, è che se quella riga è abilitata, mysql non accetta connessioni dall'esterno.

cionci
09-05-2005, 18:12
Ho visto dopo :)