Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema connessione MYSQL

    Ho bisogno di un aiuto per la connessione a Mysql con PHP.

    PHP è configurato come GASTCGI su IIS 7 (lavoro con windows 7 professional)
    la versione di PHP installate è la 5.3.1
    la versione di mysql installata è la 5.1.42

    Eseguo la mia normale connessione a DB come ho sempre fatto
    Codice PHP:
    <?php
    $link 
    mysql_connect('127.0.0.1, 'root', 'password');
    if (!$link) {
        die('
    Errore connessione' . mysql_error());
    }
    echo '
    Connesso';
    mysql_close($link);
    ?>
    ed ottengo il seguente errore:
    "PHP Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected in D:\www\siti_php\a.php on line 3 PHP Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in D:\www\siti_php\a.php on line 3 "

    Sul PHP.ini sono abilitate le seguenti estensioni:
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll

    Nonostante ore di googolate non sono ancora riuscito a capire come risolvere.
    Mysql deve lavorare con old-password oppure no? quali altre configurazioni devo controllare?

    Il problema si verifica solo su questa macchina, il mio precedente PC eseguiva lo stesso codice senza problemi.

    Help please, rasento la disperazione.

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    La libredia mysqlnd di php 5.3 necessita che le password siano nel nuovo formatto mysql (post 4.1).
    Quindi devi aggiornare le password di tutti gli utenti che sono stati aggiunti ancora nella versione minore di 4.1

    Quindi vai dalla riga di commando (o con qualsiasi tool che non sia la libredia mysqlnd di php 5.3) e fai per ogni utente una roba tipo set password for 'utente'@'host' = password('pass');

    Ps: per trovare chi ha la pass nel formatto vecchio, fai una query sulla colonna password nella tabella user nel tb mysql: quelli nel formatto vecchio avranno il hash lungo 16 anziche 41.

  3. #3
    alla fine ho risolto da solo con le seguenti 2 query lanciate dalla shell di mysql

    UPDATE mysql.user SET Password = PASSWORD('password') WHERE Host = 'localhost' AND User = 'root';
    FLUSH PRIVILEGES;

    Il nuovo PHP non supporta le password scritte in old-password

  4. #4
    Originariamente inviato da bubi1
    La libredia mysqlnd di php 5.3 necessita che le password siano nel nuovo formatto mysql (post 4.1).
    Quindi devi aggiornare le password di tutti gli utenti che sono stati aggiunti ancora nella versione minore di 4.1

    Quindi vai dalla riga di commando (o con qualsiasi tool che non sia la libredia mysqlnd di php 5.3) e fai per ogni utente una roba tipo set password for 'utente'@'host' = password('pass');

    Ps: per trovare chi ha la pass nel formatto vecchio, fai una query sulla colonna password nella tabella user nel tb mysql: quelli nel formatto vecchio avranno il hash lungo 16 anziche 41.
    Grazie per la risposta, sei stato velocissimo.
    Avevo appena trovato la soluzione. :-)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.