Domanda

Questa domanda ha già una risposta qui:

Quando eseguo $conn = mysql_connect($host, $user, $pass); io sono in grado di ottenere una connessione al database, ma quando faccio un var_dump($conn) torno bool(true) che mi sta limitando di dover collegamento multiplo a più server.

La configurazione originale in questo computer è stato XAMPP con una versione di PHP 5.2 che è stato aggiornato a PHP 5.3.4 tramite il programma di installazione di PHP. Si potrebbe connettersi al proprio database locale senza alcun problema (diverso da restituire un valore booleano anziché l'identificatore di collegamento delle risorse), ma non ha potuto connettersi a qualsiasi computer remoti (e la possibilità di connettersi a computer remoti è stata confermata). Senza essere in grado di trovare una soluzione, ho aggiornato a una versione di XAMPP che ha PHP 5.3.1 costruito. Ottengo esattamente lo stesso errore dopo una reinstallazione fresca di XAMPP che mi sta portando a credere che questo è un problema più grande .

Modifica 1 **

Trasferirsi in una nuova installazione di finestre e l'installazione di XAMPP e il tentativo di eseguire un mysql_connect a un server remoto (PHP 5.3.1) ottengo lo stesso errore:

Warning: mysql_connect() [function.mysql-connect]: Premature end of data (mysqlnd_wireprotocol.c:554) in [Removed] on line 2

Warning: mysql_connect() [function.mysql-connect]: OK packet 1 bytes shorter than expected in [Removed]p on line 2

Warning: mysql_connect() [function.mysql-connect]: 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 in [Removed] on line 2
È stato utile?

Soluzione

opzione Controlla old_passwords nel file my.cnf.

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

Se per qualsiasi motivo non è possibile passare a nuove password, non è possibile utilizzare mysqlnd come driver MySQL, e il bisogno di tornare a quello più vecchio.

Qualche informazione in più su mysqlnd

http://dev.mysql.com/downloads/connector/php-mysqlnd /

Altri suggerimenti

Per quanto riguarda l'errore pubblicato in tua modifica, ero stato sempre lo stesso errore su Windows 7 utilizzando PHP 5.3.5 durante la connessione a MySQL 5.0.45 su Linux. La soluzione per me è stato quello di disabilitare i "old_passwords" in my.cnf e RUN

set password = password('my password');

Il messaggio di errore non mettere in chiaro che si deve fare entrambe le fasi, al fine di risolvere il problema. Spero che questo aiuti.

quando si desidera modificare la password e il server continua a generare 16 byte hash, si può provare come segue:

1) generano 41bytes hash da soli (utilizzando qualche sito generatore di hash) per esempio Password: 'QWERTY' hash: 'aa1420f182e88b9e5f874f6fbe7459291e8f4601'

2) modificare la password Password impostata per 'nome utente' = '* aa1420f182e88b9e5f874f6fbe7459291e8f4601'

Ora si dovrebbe essere in grado di connettersi al database utilizzando il nuovo metodo di autenticazione

I tried just about everything listed here (and elsewhere) to no avail till I found this:

SET old_passwords = 0; UPDATE mysql.user SET Password = PASSWORD('testpass') WHERE User = 'testuser' limit 1; SELECT LENGTH(Password) FROM mysql.user WHERE User = 'testuser'; FLUSH PRIVILEGES;

Drop that into your mysql client or phpmyadmin and change the testpass to your DB login password and the testuser to your DB login user, execute query. Great success! problem solved.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top