Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 50
  1. #1
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,946

    [mySQL] soluzione al problema "Client does not support authentication protocol"

    Le versioni 4.1 e superiori di mySQL usano un protocollo di autenticazione basato su un algoritmo di hashing della password che risulta essere incompatibile con le vecchie versioni dei client.
    Se dopo aver eseguito l’upgrade del server ad una versione >= 4.1 si prova a connettersi allo stesso tramite un vecchio client il processo di autenticazione fallirà producendo il seguente messaggio d’errore:
    codice:
    shell> mysql
    Client does not support authentication protocol requested by server; consider upgrading MySQL client
    Per risolvere questo tipo di problema si possono usare le seguenti procedure:

    Eseguire l’upgrade di tutti i client per usare la nuova libreria 4.1.1 o superiore;

    se non è possibile eseguire l’upgrade dei client usare la funzione OLD_PASSWORD():
    codice:
    mysql> SET PASSWORD FOR
        -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
    o alternativamente:
    codice:
    mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
        -> WHERE Host = 'some_host' AND User = 'some_user';
    mysql> FLUSH PRIVILEGES;
    avviare il server mysqld con l’opzione "–old-passwords".


    nota: l’estensione "mysql" di php non supporta il nuovo protocollo di autenticazione di mySQL >= 4.1. Se si desidera continuare ad usare php con l’estensione "mysql" è necessario adottare una delle procedure descritte precedentemente.
    La nuova estensione "mysqli" invece è pienamente compatibile con il nuovo algoritmo di hashing; non risulta quindi necessario nessun tipo di intervento sulle password.





    pagina di riferimento:
    http://dev.mysql.com/doc/mysql/en/old-client.html

    maggiori info sul nuovo algoritmo di hashing di mySQL:
    http://dev.mysql.com/doc/mysql/en/password-hashing.html

    info su mysqli:
    http://it2.php.net/mysqli
    think simple think ringo

  2. #2
    Grande marketto ... finalmente (forse) si riuscira' a installare mysql 4.1.x su php4... senza recriminare sui clienti vecchi...

    thread messo tra i preferiti

    per dovere di cronaca esiste una ulteriore possibilita' che e' quella di aggiungere al fondo del file my.ini la stringa:

    #Use old password encryption method (needed for 4.0 and older clients).
    old-passwords

    pero' in questo caso "tutti" i CLIENT nuovi o vecchi che siano continueranno ad usare l'hash a 16 digit invece del nuovo a 40.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Si chiede la "beatificazione" di questo thread....

    uppete...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Utente di HTML.it L'avatar di Sgurbat
    Registrato dal
    Nov 2002
    Messaggi
    1,736
    concordo anch'io all'epoca sbattei la testa due giorni per questo problema.

    Proprongo venga messo in rilievo o tra le pillole.

  5. #5
    Aggiunta al thread in rilievo a furor di popolo
    Addio Aldo, amico mio... [03/12/70 - 16/08/03]

  6. #6
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,946
    [supersaibal]Originariamente inviato da gm
    Aggiunta al thread in rilievo a furor di popolo [/supersaibal]



    speriamo possa effettivamente servire
    think simple think ringo

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2000
    Messaggi
    350
    Chiedo umilmente scusa per ignoranza ma quel
    Codice PHP:
    'some_user'@'some_host' OLD_PASSWORD('newpwd'); 
    Dove va inserito?

    Vorrei provare questa soluzione (anche se non so se è giusta per il problema) in quanto quando mi connetto al database in remoto compare questo errore:
    Access denied for user: 'nomeutente@nomehost' (Using password: YES)

    Grazie.
    pap

  8. #8
    [supersaibal]Originariamente inviato da pap
    Chiedo umilmente scusa per ignoranza ma quel
    Codice PHP:
    'some_user'@'some_host' OLD_PASSWORD('newpwd'); 
    Dove va inserito?

    Vorrei provare questa soluzione (anche se non so se è giusta per il problema) in quanto quando mi connetto al database in remoto compare questo errore:
    Access denied for user: 'nomeutente@nomehost' (Using password: YES)

    Grazie. [/supersaibal]
    Non direi sia il tuo caso se non ricevi la stringa di avviso che puoi vedere nel primo post di marketto... o nel titolo.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Dunque....

    a) come faccio ad avviare il server con –old-passwords?
    b) Ho eseguito le seguenti query

    codice:
    mysql> SET PASSWORD FOR
    -> lost@localhost = OLD_PASSWORD('lost');
    Query OK, 0 rows affected (0.03 sec)
    codice:
    mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('lost')
    -> WHERE Host='localhost' AND User='lost';
    Query OK, 0 rows affected (0.03 sec)
    Rows matched: 1 Changed: 0 Warnings: 0
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 0 rows affected (0.06 sec)
    Come mai mi dice 0 rows affected?
    Eppure quell'utente c'e...se faccio una select me lo seleziona ç_ç

  10. #10
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,946
    hai provato a connetterti dopo aver cambiato la password?
    think simple think ringo

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 © 2020 vBulletin Solutions, Inc. All rights reserved.