l'hash vecchio era a solo 16 digit exadecimali.Originariamente inviato da AnFrusch@pepp
Ok, ho letto il thread e penso di aver capito..
la versione di MySQL installata sul server conserva le pwd con l'hash 'vecchio' a 32byte, il client MySQL di PHP 5.3 usa un client che invia la pwd a 40.. a questo punto però non posso permettermi di modificare l'utente sul server DB perchè in uso da client (e da un sito web) che invece si connettono correttamente.
Mi chiedo se, generando un secondo utente sul server, il problema possa arrivare a una soluzione..
La versione mysql 4.1 e superiore (forse 4.1.3) con la funzione password() genera un hash a 40 byte. Pero' conosce la funzione OLD_PASSWORD() che la genera a 16.
Quindi se il php precedente generava una password a 16 byte con mysql 4.1.nn dovevi delle due o generare la password con old_password() su mysql oppure arrivare alla versione 4.1 da un backup di mysql precedente che gia' l'aveva tale (a 16)
Ora se tu hai il php 5.3 e la versione mysql 4.1 gia' la vedo dura come compatibilita' visto che l'ideale sarebbe avere mysql 5.1 col php 5.3. Tieni presente che oltre alle password cambia anche il modo (il driver appunto) di gestire il client tra php 5.3 e mysql e non solo quello.
Credo che la situazione ottimale sarebbe di aggiornare mysql alla 5.1 (devi eseguire tutti gli step di versione per l'aggiornamento) lasciando le vecchie password e creando nuovi utenti con la nuova password da dedicare al php.
Non ti conviene lasciare "invecchiare" troppo la versione mysql perche' comunque non ti risparmi nulla negli aggiornamenti ma ti complicherai parecchio la vita nell'eseguirli.
Fai una prova: verifica creando un nuovo utente se password() genera un hash a 16 oppure 40 byte exa. Se lo crea a 40 byte, allora puoi provare a connettere il php 5.3 a questo nuovo utente mysql.

Rispondi quotando