# driver di connessione mysql

## ferroilpinguino

ciao ho installato mysql, tutto ok...

sto facendo una servlet java che si connette a tale database.....che driver mi consigliate di usare per connettermi....

ho visto che quelli mysql sono masked!!! che ne dite vale la pena di installarli comunque..o di passare a quelli completamente scritti in java??

consigliatemi ...grazie

una cosa: io ho emerso mysql...ma di default ha gia' installato i driver connected...?? o devo farlo a parte....

come faccio a vedere che driver sono??

così che possa mettere la giusta stringa in Class.forname(.....);

grazie

----------

## Opossum

Ciao!

Ho dei ricordi un pò vaghi risalenti all'esame di basi di dati, ma se non erro puoi connetterti al DB tramite jdbc, io li ho usati sotto windows  :Twisted Evil:   con oracle e non mi hanno dato alcun problema.

----------

## !equilibrium

usa il pacchetto:

dev-java/connectorj

non Ã¨ masked e funziona perfettamente

----------

## lopio

ciao

direttamente dal sito di mysql i driver jdbc

mysql-connector-java-3.0.11-stable-bin.jar

----------

## u238

 *lopio wrote:*   

> ciao
> 
> direttamente dal sito di mysql i driver jdbc
> 
> mysql-connector-java-3.0.11-stable-bin.jar

 

ecco bravo... li ho usati anch'io e vanno benissimo  :Wink: 

----------

## ferroilpinguino

non sono ancora riuscito

non riesco a connettermi in remoto a mysql con mysql query browser....

non riesco neanche a fare mysql -h host -u user -p...

mi fa :

password.....

la inserisco e poi errore....

per chiarezza host io metto l'indirizzo del computer sul quale c'è mysql server

adesso ho toccato qualcosa nel file my.cnf... potete dargli un'occhiata...

[client]

password = cane

port = 3306

socket = /var/run/mysqld/mysqld.sock

[safe_mysqld]

err-log = /var/log/mysql/mysql.err

[mysqld]

#skip-innodb

user = mysql

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

log-error = /var/log/mysql/mysqld.err

# If set, mysql logs all queries(general query log). This will be deprecated in

# 5.0. This logs all queries, even error queries and is slow.

# log = /var/log/mysql/mysql.log

#

# If you really need logging, use rather binary logging. Especially when doing

# replication. Read

# file:/usr/share/doc/mysql-*/manual.html.gz#Replication

# You can use PURGE MASTER LOGS TO '$hostname-bin.010' to get rid of old logs

# from $hostname-bin.01 up to $hostname-bin.09 while the slave server is

# running.

# Before doing that, check which logfile slave curently uses by running

# mysql> SHOW SLAVE STATUS

# To list logfiles on master do:

# mysql> SHOW MASTER LOGS

Then use PURGE for those not needed anymore only! Never remove the files

# manually!

#

# Also consult RESET MASTER and RESET SLAVE commands before doing any changes

# mysql> RESET MASTER - Deletes all binary logs listed in the index

# file, resetting the binlog index file to be empty.

# mysql> RESET SLAVE - Makes the slave forget its replication position in

# the master logs.

# mysql> SET SQL_LOG_BIN=0 - this turns off logging (execute on MASTER only)

# mysql> SET SQL_LOG_BIN=1 - this turns on logging (execute on MASTER only)

#

# log-bin

# set-variable = binlog-do-db=non_existant

# set-variable = binlog-ignore-db=database_name

#

# server-id has to unique for each master or slave in your network,

# lets use last number from IP address

# server-id = 207

basedir = /usr

datadir = /var/lib/mysql

tmpdir = /tmp

language = /usr/share/mysql/english

skip-locking

set-variable = key_buffer=16M

set-variable = max_allowed_packet=1M

set-variable = thread_stack=128K

# keep secure by default!

bind-address = 127.0.0.1

port = 3306

# this can make it even more secure:

#skip-networking

[mysqldump]

quick

set-variable = max_allowed_packet=1M

[mysql]

#no-auto-rehash # faster start of mysql but no tab completition

[isamchk]

set-variable = key_buffer=16M

----------

## !equilibrium

se vuoi gestire da remoto mysql devi cambiare questa voce:

bind-address = 127.0.0.1

----------

## ferroilpinguino

ciao ho scaricato i driver in java , come faccio ad aggiungerli nel classpath ?? io ho provato con:

set CLASSPATH = $CLASSPATH;/usr/local/src/mysql-connector-java-3.1.10/mysql-connector-java-3.1.10-bin.jar

...

bash: /usr/local/src/mysql-connector-java-3.1.10/mysql-connector-java-3.1.10-bin.jar: cannot execute binary file

set CLASSPATH = $CLASSPATH;mysql-connector-java-3.1.10-bin.jar

...

bash: mysql-connector-java-3.1.10-bin.jar: command not found

li ho scaricati e scompressi nella cartella /usr/local/src

grazie

----------

## lopio

 *ferroilpinguino wrote:*   

> ciao ho scaricato i driver in java , come faccio ad aggiungerli nel classpath ?? io ho provato con:
> 
> set CLASSPATH = $CLASSPATH;/usr/local/src/mysql-connector-java-3.1.10/mysql-connector-java-3.1.10-bin.jar
> 
> grazie

 

ciao il separatore su piattaforma unix-like  e' : non ;

mi aspetto quindi qualcosa come

```

export CLASSPATH =

$CLASSPATH:/usr/local/src/mysql-connector-java-3.1.10/mysql-connector-java-3.1.10-bin.jar

```

il mio consiglio comunque e' di non ereditare dal CLASSPATH esterno perche' per me ogni file di lancio di ogni singola applicazione dovrebbe settarsi il suo proprio CLASSPATH e basta.

In questo modo si ha il controllo migliore delle dipendenze a livello di classi  e quando si vuole automatizzare il lancio dell'applicazione tramite cron e al boot tutto funziona

PS mi aspetto che sotto /usr/local/src/mysql-connector-java-3.1.10 esista il file

mysql-connector-java-3.1.10-bin.jar  cosi' come lo hai preso dal sito

Non devi estrarre le classi dal jar per intenderci

ciao

----------

## ferroilpinguino

Ciao sto facendo un database con mysql sulla gentoo.. se non mi sbaglio non si possono emergere i driver di connnessione.....almeno non esistono ancora quelli di connector/j

quindi li ho scaricati dal sito ufficiale.

ora leggendo la documentazione....(sempre dal sito ufficiale di mysql)...si dice che basta mettere il file connector....balblabjava...jar...nel classpath...con il path assoluto...

io ho dato:

set CLASSPATH=$CLASSPATH:/directori dove è c'è il .jar

dato invio la shell non mi dice niente...

è giusto..??

questo rimane nel classpath anche dopo che riavvio la macchina?

nella servlet che ho fatto , c'è anche il collegamento al db ..non riesco a caricare giustamente il driver di connessione....

----------

## randomaze

 *ferroilpinguino wrote:*   

> Ciao sto facendo un database con mysql sulla gentoo.. se non mi sbaglio non si possono emergere i driver di connnessione.....almeno non esistono ancora quelli di connector/j

 

Perché non hai continuato qui?

Adesso faccio il merge dei topic...

----------

## lopio

 *ferroilpinguino wrote:*   

> Ciao sto facendo un database con mysql sulla gentoo.. se non mi sbaglio non si possono emergere i driver di connnessione.....almeno non esistono ancora quelli di connector/j
> 
> quindi li ho scaricati dal sito ufficiale.
> 
> ora leggendo la documentazione....(sempre dal sito ufficiale di mysql)...si dice che basta mettere il file connector....balblabjava...jar...nel classpath...con il path assoluto...
> ...

 

ciao come si diceva in precedenza  il settaggio del classpath dipende dalla situazione che devi gestire

Puoi settare il CLASSPATH nel file di lancio dell' applicazione stessa sia che la lanci a mano, sia che la lanci da icona, sia che la fai partire la boot oppure setti il CLASSPATH in maniera globale per tutto il tuo ambiente.Devi in tal caso trovare un punto che vada bene sempre (protebbe essere /etc/profile o local.start o ...)

Il mio consiglio iniziale e' comunque fare 2 prove con un main java per vedere se la connessione jdbc funziona

Quindi compilare una classe main simile al servlet per la parte si connessione al db, compilarla, creare il file di lancio con il giusto classpath e lanciarlo. Se tutto e' ok e da servlet non funziona allora va solo inserito il classpath nel posto giusto 

Se queste prove le ritieni inutili perche' hai gia' esperienza e il tuo e' un problema solo gentoo allora considera che:

se sti usando apache+ tomcat o solo tomcat e' tomcat che deve essere informato di dove deve prendere il jar per connessione al db quindi 99% tale informazioe va data O come CLASSPATH prima dell'avvio di tomcat (in una delle forma che ti ho detto cioe' nel file di lancio o nel /etc/profile,...) OPPURE inserita nel file di configurazioe di tomcat che se non sbaglio e' in forma xml.

Non avendolo installato non posso essere piu' preciso

PS se usi CLASSPATH ricordati di usare export (non set)

export CLASSPATH=....

----------

## ferroilpinguino

il mio caso è che ho apache+tomcat...quindi da ciò che ho capito il classpath...devo settarlo in un file di configurazione di tomcat...che così a intuito dovrebbe essere web.xml nella cartella webapps/sito/...

adesso provero' a verificare facendo un po di prove......

se qualcuno ha gia' avuto esperienza.....

grazie

----------

## lopio

 *ferroilpinguino wrote:*   

> il mio caso è che ho apache+tomcat...quindi da ciò che ho capito il classpath...devo settarlo in un file di configurazione di tomcat...che così a intuito dovrebbe essere web.xml nella cartella webapps/sito/...
> 
> adesso provero' a verificare facendo un po di prove......
> 
> se qualcuno ha gia' avuto esperienza.....
> ...

 

ciao sembra che non sia necessario moificare il file ma mettere in <path_installazione_tomcat>/common/libs il jar jdbc scaricato dal sito

A questo punto riavviando tomcat, tomcat  lo trova e la tua servlet puo' usarlo

```

http://jakarta.apache.org/tomcat/tomcat-5.5-doc/appdev/source.html

```

----------

## ferroilpinguino

ok i driver li trova e li carica ....ho fatto un passo avanti....ora pero' quando cerco di connettermi al database...

con DriverManager.getConnection("jdbc:mysql://192.168.0.3/pingudb"); mi da errore di connessione....

ho provato anche con jdbc:mysql://192.168.0.3:3306/pingudb ?user=andrea &password=bla

la sintassi che ho trovato mi sembra questa....il database si chiama pingudb, il computer sul quale c'è installato mysql server è 192.168.....

sul database ho fatto un grant con user andrea e password bla...

se io uso mysql query browser con quei dati funziona ...vedo il db....

non saprei...

----------

## lopio

 *ferroilpinguino wrote:*   

> ok i driver li trova e li carica ....ho fatto un passo avanti....ora pero' quando cerco di connettermi al database...
> 
> con DriverManager.getConnection("jdbc:mysql://192.168.0.3/pingudb"); mi da errore di connessione....
> 
> ho provato anche con jdbc:mysql://192.168.0.3:3306/pingudb ?user=andrea &password=bla
> ...

 

ciao occhio agli spazi inutili e ai diritti di accesso 

Credo che sia differente usare 192.168.0.3 oppure 127.0.0.1 oppure localhost controlla nella tabella di grant (tabella host) cosa hai settato perche' e' dalla combinazione che esce la regola di accesso

A occhio proverei anche con 

```

jdbc:mysql://127.0.0.1/pingudb?user=andrea&password=bla

```

oppure

```

jdbc:mysql://localhost/pingudb?user=andrea&password=bla

```

Al max proverei a disabilitare uso di tabelle di accesso lanciandoil server con --skip-grant-tables e accedendo con

```

 jdbc:mysql://127.0.0.1/pingudb?user=root&password=

```

----------

## ferroilpinguino

ho provato e niente....

cosa intendi con occhio ai diritti di accesso??

e come faccio a controllare nella tabella grant (tabella host)....

scusa...ma sono agli inizi con mysql...

con mysql query browser con username andrea e password bla funziona... non sono quelli i dati da inserire in ?user=&password ???'

come mai non riesco a dare:

andrea@pinguserver ~ $ mysql -h pinguserver -u andrea -p

Enter password:

ERROR 1045: Access denied for user: 'andrea@pinguserver' (Using password: YES)

andrea@pinguserver ~ $ mysql -h localhost -u andrea -p

Enter password:

ERROR 1045: Access denied for user: 'andrea@localhost' (Using password: YES)

andrea@pinguserver ~ $ mysql -h 192.168.0.3 -u andrea -p

Enter password:

ERROR 1045: Access denied for user: 'andrea@pinguserver' (Using password: YES)

andrea@pinguserver ~ $ su

Password:

pinguserver andrea # mysql -h localhost -u andrea -p

Enter password:

ERROR 1045: Access denied for user: 'andrea@localhost' (Using password: YES)

pinguserver andrea # mysql -h 127.0.0.1 -u andrea -p

Enter password:

ERROR 2003: Can't connect to MySQL server on '127.0.0.1' (111)

pinguserver andrea # mysql -h andrea@pinguserver -u andrea -p

Enter password:

ERROR 2005: Unknown MySQL Server Host 'andrea@pinguserver' (1)

pinguserver andrea # mysql -h andrea@localhost -u andrea -p

Enter password:

ERROR 2005: Unknown MySQL Server Host 'andrea@localhost' (1)

pinguserver andrea #

non capisco questo fatto dei diritti di accesso.....

----------

## lopio

ciao

non e' che hai il file my.cnf nella tua home che overrida la password che tu inserisci?Eliminalo un attimosto file visto che non e'  necessario

```

password = cane 

```

PS Crederei a questa eventualita' pero' se da java ti connettessi ma cosi' e' proprio strano

Di default il sistema nasce senza password per utente user quindi mi aspetto che funzioni

```

mysql -u root 

```

posta il contenuto di

```

use mysql;

select host,user,password from user;

```

AL MAX SE PROPRIo sei disperato almento apri il file mysqld_safe e dove lancia il server ($MYSQLD .......) accoda alle varie opzioni  --skip-grant-tables e riavvia 

A questo punto dovresti accedere per forza

----------

## ferroilpinguino

 *lopio wrote:*   

> ciao
> 
> non e' che hai il file my.cnf nella tua home che overrida la password che tu inserisci?Eliminalo un attimosto file visto che non e'  necessario
> 
> posta il contenuto di
> ...

 

 +-------------+--------+------------------+

    -> | host        | user   | password         |

    -> +-------------+--------+------------------+

    -> | localhost   | root   |                  |

    -> | pinguserver | root   |                  |

    -> | localhost   |        |                  |

    -> | pinguserver |        |                  |

    -> | %           | andrea |                  |

    -> | localhost   | andrea |                  |

    -> | 192.168.0.6 | andrea | 35995b3568257f3d |

    -> +-------------+--------+------------------+

    -> 7 rows in set (0.05 sec)

ecco qui ....che user e password devo usare???

----------

## lopio

 *ferroilpinguino wrote:*   

>  *lopio wrote:*   ciao
> 
> non e' che hai il file my.cnf nella tua home che overrida la password che tu inserisci?Eliminalo un attimosto file visto che non e'  necessario
> 
> posta il contenuto di
> ...

 

Partendo dal presupposto che la password sia giusta (finisce criptata nel db) la richiesta con password deve provenire da 192.168.0.6 

Strano pero' che 

```

mysql -u root

```

non funzioni ne' (sempre senza password)

```

mysql -u andrea -h localhost

```

Puoi ricreare una regola con localhost andrea password cancellando quella esistente ?

----------

## ferroilpinguino

puoi parlare più terra terra?? cosa devo fare??

----------

## lopio

ciao, 

scusa se non sono chiaro

Dalla tabella che hai postato sembra difficile che tu non possa accedere senza dare la password con

```

mysql -u root

```

```

mysql -u andrea

```

Mi confermi che non ci riesci?

Fossi in te cancellerei la entry che hai fatto  con host=192.168.0.6  user=andrea

Hai detto di essere riuscito a loggarti via gui quindi non dovrebbe essere un problema grosso rimuovere tale entry (aiutati con il manuale mysql se hai bisogno della sintassi giusta e lo devi fare a mano con query sql DELETE)

Ne  ricreerei una nuova impostando come host=localhost. Questo passaggio lo hai gia' fatti in precedenza si tratta di rifarlo  impostando come host il valore localhost.

Se non ne vieni a capo ricorda  almeno che passaggi hai fatto dopo installazione  (e mysql_install_db) visto che di default il sistema consente a root di loggarsi tranquillamente senza password

----------

## ferroilpinguino

ciao per i comandi ti confermo che non vanno....se nel file my.cnf c'è password=cane...

mi dovresti fare un po di chirarezza.....

cosa centra mysql -h localhost -u andrea -p

.......

con grant all privilegies.....blablabla......

con quale di questi creo user e password che uso per ...

jdbc:mysql://localhost/pingudb?user=andrea&password=cane ???

nel file my.cnf ammesso che sia nuovissimo(di default) a parte il bind-address devo modificare qualcosa..???

ho notato che sotto client se metto password=cane non riesco più a fare niente...neanche da locale....

quindi la riga password la tengo commentata??

grazie e scusa se ti rompo pero' mi sono incasinato...

----------

## lopio

ciao ora ti capisco un po' meno

Il file my.cnf nella tua homedir serve per evitare lato client di settare dei valori di variabili di ambiente a mano quindi se setti cane come password mi sa che la usi implicitamente sempre e le cose non vanno visto che tale password non e' corretta.

Prendi tale file, che io di default non ho nella mia homedir e spostalo,muovilo,brucialo

Ora con la tabella da te impostato devi poter entrare (a meno di qualcosa che purtroppo mi sfugge) impostando  

mysql -u root 

dovresti entrare e avere il prompt

I privilegi sulle tabelle che hai creato invece appartengono alla fase suggessiva all'autorizzazione di connessione dove settando in un certo modo hai deciso cosa tale utente puo' fare sul database e le tabelle prescelte

A me sembra che tu non riesca a loggarti non che tu non riesca a gestire certe tabelle per quello volevo che provassi con utente root e password non settata

Non mi ricordo a memoria le query per settare i grant me devi solo aprire la doc di mysql e vedere la sintassi del GRANT

----------

