GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come risolvere il problema:mysqlnd non può connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non sicura

Dopo aver aggiornato un server PHP da PHP 5.3.3 a PHP 5.6.x, lavorando con MySQL Server 5.1.x su una semplice casella CentOS 6.x a 64 bit, alcune nuove app Web mostravano questo errore di connessione mysqlnd: mysqlnd non può connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non sicura

Questo era l'errore completo ed esatto:

mysqlnd non può connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non sicura. Utilizzare uno strumento di amministrazione per reimpostare la password con il comando SET PASSWORD =PASSWORD('your_existing_password'). Questo memorizzerà un nuovo valore hash più sicuro in mysql.user. Se questo utente viene utilizzato in altri script eseguiti da PHP 5.2 o precedenti, potrebbe essere necessario rimuovere il flag old-passwords dal file my.cnf

Ciò accade perché il nuovo client php mysqlnd si rifiuta di lavorare con le password vecchio stile di MySQL. Quindi, anche se hai old_passwords=1, questo non funzionerà per queste nuove app web, che richiedono una maggiore sicurezza dell'hash delle password.

Come posso correggere l'errore che mysqlnd non riesce a connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non sicura?

Questo errore può essere corretto facilmente se segui i passaggi successivi:

Modifica il file di configurazione MySQL principale:

nano -w /etc/my.cnf

Modifica:

old_passwords=1

a

old_passwords=0

Applicare le modifiche:

service mysqld restart

Connettiti alla console MySQL come root:

mysql -u root -p

Ora reimposta la password utente per utilizzare il nuovo hash:

SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere');
flush privileges;

Sostituisci "mysqluser" e "passwordqui" con il tuo nome utente e password reali.

Ora torna su /etc/my.cnf e ripristina le modifiche apportate in precedenza, imposta:

old_password=1

Riavvia MySQL per applicare le modifiche:

service mysqld restart

Fatto tutto, ora il tuo utente dovrebbe utilizzare l'hash della password MySQL più potente.
Questo può essere verificato dalla console MySQL usando questo comando:

mysql> SELECT user, Length(Password) FROM mysql.user;
+------------------+------------------+
| user | Length(Password) |
+------------------+------------------+
| root | 16 |
| forum_user | 16 |
| user2 | 41 |
| lorex | 41 |
| m3user | 16 |

Se vedi '41', allora quell'utente sta usando il nuovo hash e '16' significa che sta usando il vecchio hash.

Fatto tutto, a questo punto il tuo errore mysqlnd non può connettersi a MySQL 4.1+ usando la vecchia autenticazione non sicura dovrebbe essere corretto e dovresti essere in grado di lavorare normalmente con le tue applicazioni web.

Come risolvere il problema:mysqlnd non può connettersi a MySQL 4.1+ utilizzando la vecchia autenticazione non sicura Ultima modifica:7 febbraio 2017 da Esteban Borges
Cent OS
  1. Come configurare la configurazione MySQL Master-Slave utilizzando i nodi CentOS 7?

  2. Come eseguire il backup e il ripristino del database MySQL utilizzando la riga di comando

  3. Come connettersi in remoto a MySQL

  4. Come connettere l'host remoto usando il comando ssh

  5. Come creare un database MySQL utilizzando l'API cPanel

Come configurare un database utilizzando la procedura guidata del database MySQL

Come installare l'ultimo MySQL 8 in Ubuntu

Come installare l'ultimo MySQL 8 su Debian 11

Come installare l'ultimo MySQL 8 su Ubuntu 20.04

L'applicazione non può connettersi al database

Come connettersi a MySQL usando PHP