2015-10-22 11 views
12

So che ci sono state molte domande sollevate con la stessa preoccupazione della mia, ma spero che tu possa aiutarmi a trovare un'altra soluzione per questo.Impossibile connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non protetta

Stiamo usando Symfony 2.5.10, PHP 5.4.44 e MySQL 4.1.20 per il nostro progetto.

Ogni volta che tento di accedere al sistema o ogni atto che verte la connessione al database (ad esempio l'aggiunta di nuovi utenti utilizzando i comandi FOS), ricevo questo errore:

SQLSTATE[HY000] [2000] 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

Abbiamo già provato a installare old_passwords in my.cnf a 0, riavviare mysql, impostare una nuova password per l'utente mysql e riavviare mysql nuovamente ma sempre lo stesso. E ogni volta che si corre questo nella finestra di query:

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

mostra ancora 16 come la lunghezza della password dell'utente che stiamo usando. E anche quando si controllano le variabili e le impostazioni del server mysql, old passwords è ON (anche se abbiamo già impostato old_password su 0 in my.cnf).

Cosa c'è di sbagliato in questo? Apprezzerei molto il tuo aiuto.

Aggiornamento: Per il frattempo, rimuoveremo la password dell'utente di db per consentirci di accedere al database. Ma sto ancora cercando altre soluzioni poiché quelle soluzioni che ho trovato in rete (come la rimozione o il commento di old_passwords=1 in my.cnf, l'impostazione di old_passwords su 0 e l'impostazione di nuova password e il riavvio) non hanno funzionato per me.

Un altro aggiornamento: Comunemente, la soluzione per questo problema sarebbe l'impostazione old_passwords off in MySQL, ma poi, come accennato nel PHP documentation,

the new mysqlnd library does not read mysql configuration files (my.cnf/my.ini).

Quindi questo significa che l'impostazione old_passwords al 0 my.cnf non ha senso? Non ho ancora trovato la soluzione a questo problema.

Abbiamo bisogno di un aggiornamento in una delle piattaforme utilizzate? Grazie in anticipo per l'aiuto.

+0

Possibile un duplicato di http://stackoverflow.com/questions/1575807/cannot-connect-to-mysql-4-1-using- vecchia autenticazione – Stafox

+0

Hai eseguito 'FLUSH PRIVILEGES;'? – Stafox

+0

Si prega di fare riferimento a http://stackoverflow.com/questions/1575807/cannot-connect-to-mysql-4-1-using-old-authentication –

risposta

2

Si prega di provare questa soluzione

http://laravel.io/forum/04-16-2014-solving-mysqlnd-cannot-connect-to-mysql-41

Come per la soluzione è sufficiente impostare nuovamente la password e specificare che essere salvato nel nuovo formato.

mysql> SET @@session.old_passwords = 0; 
Query OK, 0 rows affected (0.00 sec) 
SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass'); 
Query OK, 1 rows affected (0.00 sec); 
+0

Ho provato questo, ma ha ancora la stessa uscita .. 'SQLSTATE [HY000] [2000] mysqlnd non può connettersi a MySQL 4.1+ usando la vecchia autenticazione non sicura ...' – User122113

3

"SET PASSWORD" è obsoleto nel server MySQL 5.7.6.

La sintassi da seguire per i server sotto 5.7.6 è,

SET PASSWORD [FOR user] = password_option 
password_option: { 
    PASSWORD('auth_string') 
    | OLD_PASSWORD('auth_string') 
    | 'hash_string' 
} 

La sintassi da seguire per i server 5.7.6 e sopra è,

SET PASSWORD [FOR user] = password_option 
password_option: { 
    PASSWORD('auth_string') 
    | 'auth_string' 
} 

anche riferi->http://dev.mysql.com/doc/refman/5.7/en/set-password.html

+0

Stanno usando MySQL 4.1.20 non MySQL 5.7.6 quindi dovrebbe lavoro;) – tobiinformatik

+0

Ricevo errori con la sintassi SQL. :( – User122113

Problemi correlati