View previous topic :: View next topic |
Author |
Message |
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Mon Feb 28, 2005 8:35 pm Post subject: [OT] MySQL: perchè la connessione JDBC viene rifiutata |
|
|
Salve!
Sto facendo un software gestionale per l'università e ho scelto come database di appoggio MySQL per una miriade di motivi che potete immaginarvi.
Installato il server senza problemi, da console accedo senza intoppi, invece attraverso JDBC viene lanciata un'eccezione
La ragione di questa eccezione è che il server rifiuta la connessione
C'è un modo per rendere il server che ho già installato utilizzabile da JDBC?
Grazie! _________________ bye,
Fuzzo
Last edited by Fuzzo on Tue Mar 01, 2005 8:57 am; edited 2 times in total |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Mon Feb 28, 2005 9:11 pm Post subject: |
|
|
Questa mi pare molto una domanda da www.programmazione.it
Metti il tag [OT] al titolo.
Che genere di eccezione di da? _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Tue Mar 01, 2005 9:27 am Post subject: |
|
|
Il database mysql per default accetta solo connessioni in locale.
controlla che l'utente con il quale vuoi accedere, abbia il campo host della tabella user
impostata con l'indirizzo della macchina remota da cui provi ad accedere.
Se vuoi che acceda da qualsiasi macchina, imposta il % al suo posto.
Inoltre controlla user e password e che il driver sia caricato prima di effettuare la connessione tramite stringa. |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Tue Mar 01, 2005 11:32 am Post subject: |
|
|
AlterX, grazie per avere risposto!
Allora, il driver è presente e viene rilevato in maniera corretta.
Quello che voglio fare io è accedere al DB locale da localhost appunto, usando JDBC!
Il server e l'applet Java che servono allo scopo sono entrambe in locale 127.0.0.1.
Il problema è che con:
Code: | mysql -u root -p miapass |
va tutto a meraviglia, attraverso l'applet invece la connessione viene rifiutata _________________ bye,
Fuzzo |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Tue Mar 01, 2005 2:04 pm Post subject: |
|
|
Io mi ricordo che al posto di usare JDBC ho usato un driver fornito da MySQL mi pare i chiamasse connector. Prova ad usare quello. _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Tue Mar 01, 2005 2:24 pm Post subject: |
|
|
Posta er codice!! |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Tue Mar 01, 2005 2:27 pm Post subject: |
|
|
AlterX wrote: | Posta er codice!! |
Er codice come dici tu è disponibile su internet nel senso che basta scaricarsi la documentazione e lo trovi bello che spiegato
Purtroppo non ho più quel codice sottomano se no lo avrei postato con piacere. _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Tue Mar 01, 2005 2:35 pm Post subject: |
|
|
noo voglio er codice che usa lui!! |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Tue Mar 01, 2005 2:37 pm Post subject: |
|
|
AlterX wrote: | noo voglio er codice che usa lui!! |
Allora la prossima volta specifica a chi è rivolta la domanda. _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Tue Mar 01, 2005 2:40 pm Post subject: |
|
|
gutter wrote: | AlterX wrote: | noo voglio er codice che usa lui!! |
Allora la prossima volta specifica a chi è rivolta la domanda. |
ehehehe scusa...
non era rivolto a te |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Tue Mar 01, 2005 6:13 pm Post subject: |
|
|
gutter wrote: | Io mi ricordo che al posto di usare JDBC ho usato un driver fornito da MySQL mi pare i chiamasse connector. Prova ad usare quello. |
Io uso il connector, che non è altro che l'interfaccia JDBC a MySQL
Il codice c'entra poco, in quanto lo stesso codice con un server MySQL sotto Window$ lavora alla grande
Credo dipenda dai permessi, anche se non so dove mettere le mani
Devo per caso addare un utente connector alla lista di utenti MySQL?
Mi dispiace per l'OT, ma solo voi sapete rispondere _________________ bye,
Fuzzo |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Tue Mar 01, 2005 6:16 pm Post subject: |
|
|
Fuzzo wrote: | Io uso il connector, che non è altro che l'interfaccia JDBC a MySQL
|
Ma sei sicuro che sia un'interfaccia JDBC. Che mi ricordi (e posso ovviamente sbagliare) c'erano tre tipi di driver e mi pare che il connector ricadesse nella prima tipologia ovvero "diver nativo scritto in java". _________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Tue Mar 01, 2005 7:31 pm Post subject: |
|
|
gutter wrote: | Fuzzo wrote: | Io uso il connector, che non è altro che l'interfaccia JDBC a MySQL
|
Ma sei sicuro che sia un'interfaccia JDBC. Che mi ricordi (e posso ovviamente sbagliare) c'erano tre tipi di driver e mi pare che il connector ricadesse nella prima tipologia ovvero "diver nativo scritto in java". |
Code: | private boolean apriConnessione(String host, String db, String nu,
String pwd)
{
if (connesso)
return true;
String url = new String();
try
{
url = "jdbc:mysql://" + host + "/" + db;
connessione = DriverManager.getConnection(url, nu, pwd);
System.out.println("Connessione stabilita con: " + url);
connesso = true;
return true;
}
catch (SQLException e)
{
System.out.println("Errore: Impossibile stabilire una connessione"
+ "a: " + url);
return false;
}
}
|
La stringa url dovrebbe spiegarsi da sola ...e con questo ho spiegato anche che eccezione lancia
Altre notizie per quanto riguarda l'accesso? _________________ bye,
Fuzzo |
|
Back to top |
|
|
gutter Bodhisattva
Joined: 13 Mar 2004 Posts: 7162 Location: Aarau, Aargau, Switzerland
|
Posted: Tue Mar 01, 2005 10:21 pm Post subject: |
|
|
Prova così:
Code: |
conn = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + database + "?user=USER"); |
_________________ Registered as User #281564 and Machines #163761 |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Wed Mar 02, 2005 9:58 am Post subject: |
|
|
Fuzzo wrote: |
Code: |
...
try
{
url = "jdbc:mysql://" + host + "/" + db;
connessione = DriverManager.getConnection(url, nu, pwd);
System.out.println("Connessione stabilita con: " + url);
connesso = true;
return true;
}
...
|
|
Scusa, ma in questo codice manca la registrazione del driver JDBC di mysql.
Hai voglia di usarlo...!!!
Class.forName("com.mysql.jdbc.Driver").newInstance(); da usare prima di Driver.getConnection(...).
newInstance() non è obbligatorio, ma per compatibilità con altre virtual machine, è necessaria.
In windows evidentemente, la registrazione è avvenuta in automatico!
Edit gutter: Cerchiamo di quotare meglio. |
|
Back to top |
|
|
drakkan Apprentice
Joined: 21 Jun 2004 Posts: 232
|
Posted: Wed Mar 02, 2005 11:00 am Post subject: |
|
|
forse dico una banalità ma hai provato a settare le grant dal prompt di mysql:
Code: |
grant all privileges on nomedb.* to nomeutente@host identified by 'tuapassword';
flush privileges;
|
|
|
Back to top |
|
|
funkoolow Guru
Joined: 21 Sep 2004 Posts: 545 Location: er paese delle anguille
|
Posted: Wed Mar 02, 2005 11:20 am Post subject: |
|
|
ho un problema molto simile quindi mi permetto di intervenire sperando di non portare la discussione trppo OT.
Sul mio sistema gentoo, ho installato mysql e tutto funziona alla perfezione, tranne l'uso del db dell'esterno.
Per spiegarmi meglio: ho un sito su Aruba (noto provider lowcost) che normalmente si appoggia al db mysql localizzato su un IP (evidentemente appartenente alla loro rete) del tipo 62.xx.xx.xxx. Per provare a vedere se il mio db poteva essere usato anche dall'esterno, ho copiato il db che avevo su Aruba e l'ho passato tale e quale sul db del mio sistema gentoo, quindi dal file di configurazione del sito in questione, ho specificato di usare il db localizzato al mio IP invece che quello dell'IP di aruba, settando ovviamente relativi nome db, user e pass.
La cosa non funziona cmq, nonostante abbia provveduto a:
1) reindirizzare il traffico sulla 3306 verso l'ip del server gentoo (uso un modem-router). la cosa sembra non essere il problema dato che l'ip sulla porta 3306 è visibile via telnet.
2) settare l'host per l'utente che usa il suddetto db su %. anche questo non sembra essere il problema dato che, se mi connetto per vie esterne (via 56k con portatile, quindi esternamente alla rete dsl su cui è il server) al db tramite interfaccia phpmyadmin, il db è accessibile e navigabile.
3) settare la variabile bind-address nel file my.cnf su 0.0.0.0. questa sembra essere la stringa che setta il range di ascolto del db mysql, infatti se metto il valore di default 127.0.0.1, dall'esterno l'ip sulla porta 3306 non è più visibile via telnet come dal punto 1)
spero di non portare troppo OT la discussione e aspetto una possibile risposta, grazie _________________ SabaziaLUG: il LUG a nord di Roma |
|
Back to top |
|
|
randomaze Bodhisattva
Joined: 21 Oct 2003 Posts: 9985
|
Posted: Wed Mar 02, 2005 2:13 pm Post subject: |
|
|
funkoolow wrote: | spero di non portare troppo OT la discussione e aspetto una possibile risposta, grazie |
Probabilmente aruba non ti fa contattare una macchina esterna. Se hai dubbi in proposito ti conviene chiedere sul forum di aruba. _________________ Ciao da me! |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Wed Mar 02, 2005 7:23 pm Post subject: |
|
|
Quote: | AlterX ha scritto:
Scusa, ma in questo codice manca la registrazione del driver JDBC di mysql.
Hai voglia di usarlo...!!!
Class.forName("com.mysql.jdbc.Driver").newInstance(); da usare prima di Driver.getConnection(...).
newInstance() non è obbligatorio, ma per compatibilità con altre virtual machine, è necessaria.
In windows evidentemente, la registrazione è avvenuta in automatico! |
Sarà la mia prossima prova
Quote: | funkoolow ha scritto:
3) settare la variabile bind-address nel file my.cnf su 0.0.0.0. questa sembra essere la stringa che setta il range di ascolto del db mysql, infatti se metto il valore di default 127.0.0.1, dall'esterno l'ip sulla porta 3306 non è più visibile via telnet come dal punto 1)
|
Il file my.cnf era nella mia lista delle possibili cause, e mi sa che c'entra qualcosa pure lui... farò sapere
Quote: | drakkan ha scritto:
forse dico una banalità ma hai provato a settare le grant dal prompt di mysql:
Code: |
grant all privileges on nomedb.* to nomeutente@host identified by 'tuapassword';
flush privileges; |
|
No, non ho provato ma credo sia inutile perchè usando lo stesso username e la stessa password da prompt mysql, l'accesso viene consentito.
Quote: | gutter ha scritto:
Prova così:
Code: | conn = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/" + database + "?user=USER");
|
|
Ho già provato: nulla _________________ bye,
Fuzzo |
|
Back to top |
|
|
drakkan Apprentice
Joined: 21 Jun 2004 Posts: 232
|
Posted: Wed Mar 02, 2005 7:27 pm Post subject: |
|
|
Quote: |
No, non ho provato ma credo sia inutile perchè usando lo stesso username e la stessa password da prompt mysql, l'accesso viene consentito
|
ho avuto un problema simile tempo fa quando accedi da prompt prova ad aggiungere -h iphost se va allora non è necessaria la grant altrimenti è quello |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Thu Mar 03, 2005 9:38 am Post subject: |
|
|
In ogni caso la registrazione del driver mettila perchè è necessaria!
Se puoi cerca di descrivere il problema in modo diverso, da un altro punto di vista.
Breve e conciso |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Fri Mar 04, 2005 9:32 am Post subject: |
|
|
Breve e conciso:
- Il server Linux MySQL non mi permette l'accesso via JDBC, con gli stessi dati autenticazione che uso da console, dove posso accedere senza nessun problema _________________ bye,
Fuzzo |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Fri Mar 04, 2005 10:53 am Post subject: |
|
|
Fuzzo wrote: | Breve e conciso:
- Il server Linux MySQL non mi permette l'accesso via JDBC, con gli stessi dati autenticazione che uso da console, dove posso accedere senza nessun problema |
Bene...ora dimmi se l'accesso via JDBC avviene da macchina locale o remota!? |
|
Back to top |
|
|
Fuzzo Guru
Joined: 23 Jun 2004 Posts: 319 Location: Padova, Italy
|
Posted: Sat Mar 05, 2005 6:26 pm Post subject: |
|
|
Locale, da 127.0.0.1
Purtroppo non ho ancora fatto in tempo a provare le tecniche che mi hanno suggerito pochi post sopra, ma di sicuro quando le proverò riferirò i risultati! _________________ bye,
Fuzzo |
|
Back to top |
|
|
AlterX l33t
Joined: 03 Apr 2004 Posts: 754 Location: rm -rf /*
|
Posted: Mon Mar 07, 2005 9:46 am Post subject: |
|
|
In ogni caso, intercetta l'errore che ti
da lo JDBC e postalo sul forum.
Bisogna capire se viene rifiutata la connessione, o se i driver JDBC sono configurati
bene sul server web! |
|
Back to top |
|
|
|