2012-01-12 14 views
22

Sto ottenendo il seguente errore:Errore: mysqlnd non riesce a connettersi a MySQL 4.1+ utilizzando il vecchio di autenticazione insicuro

Database connection failed: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password') .

This will store a new, and more secure, hash value in mysql.user . If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file

ho utilizzando PHP 5.3.8 e MySQL 5.5.16 sulla mia macchina locale e il mio ospite (media temple) esegue PHP 5.3 MySQL 5.0.51a. La versione sul server live è precedente a quella sul mio computer.

Come posso risolvere questo errore e collegarmi a MySQL dal mio computer locale?

So che ci sono post simili a questo ma li ho provati tutti e nessuno funziona.

+0

Questo è un duplicato di http://stackoverflow.com/questions/1575807/cannot-connect-to-mysql-4-1-using-old-authentication – rkosegi

+5

Come indicato nel mio post, ho provato questi suggerimenti e nessuno stanno lavorando per me. Anche quel post è tornato in 09, quindi ho ripubblicato per vedere se c'erano altre/più recenti soluzioni. – user982853

risposta

36
  • rimuovere o commentare old_passwords = 1 in my.cnf

Riavvia MySQL. In caso contrario, MySQL continuerà a utilizzare il vecchio formato della password, il che significa che non è possibile aggiornare le password utilizzando la funzione di hashing incorporata PASSWORD().

Gli hash delle password precedenti sono 16 caratteri, i nuovi sono 41 caratteri.

  • connessione al database, ed eseguire la seguente query:

    SELECT user, Length(`Password`) FROM `mysql`.`user`; 
    

Questo ti mostrerà che le password sono nel vecchio formato, ad esempio:

 
+----------+--------------------+ 
| user  | Length(`Password`) | 
+----------+--------------------+ 
| root  |     41 | 
| root  |     16 | 
| user2 |     16 | 
| user2 |     16 | 
+----------+--------------------+

Avviso qui ogni utente può avere più righe (una per ogni specifica dell'host).

aggiornare la password per ogni utente, eseguire i seguenti:

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username'; 

privilegi Infine, a filo:

FLUSH PRIVILEGES; 

Fonte: How to fix "mysqlnd cannot connect to MySQL 4.1+ using old authentication" on PHP5.3

+0

Im un po 'confuso, dovrei fare questo int la riga di comando del mio comp o do dovrei usare myadminphp per connettersi al db esterno. Il mio db è su un server remoto non sul mio comp. – user982853

+0

Tutto quello che viene eseguito in phpmyadmin mi dice che l'accesso è stato negato. Posso fare query normali ma qualsiasi comando di amministrazione viene negato. – user982853

+0

Quando eseguo il codice precedente sul mio computer locale ottengo root | 0 tre volte. Tre righe di radice | 0. Come se non ci fosse un passord o la password è 0 in lunghezza. Quando lo eseguo in phpmyadmin (db esterno) ottengo l'accesso negato. – user982853

1

Configurare il server Mysql di destinazione per consentire l'autenticazione meno sicura.

http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_old-passwords

sufficiente nel file my.cnf sul server di destinazione Mysqld commentare le old_passwords.

Forse c'è un modo per ottenere PHP build (o crearlo da soli) che utilizza la modalità di autenticazione compatibile (vecchia).

+0

Ho accesso al mio file my.cnf. Ho apportato le modifiche al commento fuori linea e ora ottengo l'errore: selezione del database non riuscita: accesso negato per l'utente 'db95658_ewr' @ '%' al database 'mvc'. Ho controllato il mio nome utente e password e sono corretti. – user982853

+0

Provare a reimpostare la password come se fosse la stessa.Quando mysqld ha cambiato la modalità di autenticazione, ha bisogno di cambiare gli hash delle password nella tabella degli utenti. – rkosegi

2

ho avuto lo stesso problema tentando di connettersi per eseguire il mediatemple esterno-db tramite IIS sul mio computer Windows locale. L'aggiornamento della mia password per l'utente db specifico ha risolto il problema di connessione al database.

Entro (mt) Centro account, è sufficiente aggiornare la password. Ho usato la stessa password e ho risolto tutti i miei problemi.

0

Ho riscontrato questo problema quando ho importato un database da una versione precedente di MySQL.Il problema più grande - che mi impediva di connettersi a MySQL con il mio utente root, così ho dovuto reset the root password seguendo le istruzioni riportate di seguito:

Dopo questo sono stato in grado di applicare la correzione dato sopra.

E.g. da:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); 
3

ho avuto un problema in cui le vecchie password erano stati abilitare dal server di default, quindi una semplice password impostata per 'un po-user' @ '%' = PASSWORD ('XXXX'); non funzionerebbe (per motivi a causa di vecchio software e l'eredità che io non entrerò nei ....)

Soluzione:

SET old_passwords = 0; 
SET PASSWORD FOR 'some-user'@'%' = PASSWORD ('XXXX'); 
FLUSH PRIVILEGES; 

Dettagli:

Facendo questo come il login utente

SET Password = PASSWORD('password') 

Semplicemente non ha funzionato

Eg verificabile qui

SHOW CREATE TABLE `mysql`.`user`; 

La password non si sposterebbe a da

| HOST | USER | PASS | 

PASSWORD VECCHIA

| % | some-user | 7fa559aa33d844b4 | 

quello che volevo, EG NUOVA PASSWORD

| % | some-user | *CF04AECA892176E6C0C8206F965C03374D12F93E | 

così ho guardato le variabili per vecchie password

SHOW VARIABLES; 

... 
old_passwords = ON 
... 

Quindi, in pratica ho dovuto impostare il server var mysql primo a old_password = OFF, ad esempio, questo ha funzionato per me

SET old_passwords = 0; 
SET PASSWORD FOR 'some-user'@'%' = PASSWORD ('XXXX'); 
FLUSH PRIVILEGES; 
0

mi sono imbattuto in questo errore per la prima volta con un db Media Temple su una server della griglia.

Il problema è stato causato perché ho usato la password di un utente del database che era ancora nel loro formato vecchia password. Il nuovo formato prevede 10 + caratteri, caratteri speciali, un numero, ecc ...

ho creato un nuovo utente del database e la password nel nuovo formato e ha funzionato bene.

Problemi correlati