GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Lösung:mysqlnd kann mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen

Nach dem Upgrade eines PHP-Servers von PHP 5.3.3 auf PHP 5.6.x, der mit MySQL Server 5.1.x auf einer einfachen CentOS 6.x 64-Bit-Box arbeitete, gab es einige neue Web-Apps, die diesen mysqlnd-Verbindungsfehler zeigten:mysqlnd kann nicht sich mit MySQL 4.1+ mit der alten unsicheren Authentifizierung verbinden

Dies war der vollständige und genaue Fehler:

mysqlnd kann mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen. Bitte verwenden Sie ein Administrationstool, um Ihr Passwort mit dem Befehl SET PASSWORD =PASSWORD(‘your_existing_password’) zurückzusetzen. Dadurch wird ein neuer und sicherer Hash-Wert in mysql.user gespeichert. Wenn dieser Benutzer in anderen Skripten verwendet wird, die von PHP 5.2 oder früher ausgeführt werden, müssen Sie möglicherweise das Old-Passwords-Flag aus Ihrer my.cnf-Datei entfernen

Dies geschieht, weil der neue mysqlnd-PHP-Client sich weigert, mit Passwörtern im alten Stil von MySQL zu arbeiten. Selbst wenn Sie also old_passwords=1 haben, funktioniert dies nicht für diese neuen Web-Apps, die eine stärkere Passwort-Hash-Sicherheit erfordern.

Wie kann ich den Fehler beheben, dass mysqlnd mit der alten unsicheren Authentifizierung keine Verbindung zu MySQL 4.1+ herstellen kann?

Dieser Fehler kann leicht behoben werden, wenn Sie die nächsten Schritte befolgen:

Haupt-MYSQL-Konfigurationsdatei bearbeiten:

nano -w /etc/my.cnf

Änderung:

old_passwords=1

zu

old_passwords=0

Übernehmen Sie die Änderungen:

service mysqld restart

Verbinden Sie sich als root mit der MySQL-Konsole:

mysql -u root -p

Setzen Sie nun das Benutzerkennwort zurück, um den neuen Hash zu verwenden:

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

Ersetzen Sie „mysqluser“ und „passwordhere“ durch Ihren echten Benutzernamen und Ihr richtiges Passwort.

Gehen Sie nun zurück zu /etc/my.cnf und machen Sie die zuvor vorgenommenen Änderungen rückgängig, setzen Sie:

old_password=1

Starten Sie MySQL neu, um die Änderungen zu übernehmen:

service mysqld restart

Alles erledigt, jetzt sollte Ihr Benutzer den stärkeren MySQL-Passwort-Hash verwenden.
Dies kann von der MySQL-Konsole aus mit diesem Befehl überprüft werden:

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

Wenn Sie „41“ sehen, verwendet dieser Benutzer den neuen Hash, und „16“ bedeutet, dass er den alten Hash verwendet.

Alles erledigt, an diesem Punkt sollte Ihr Fehler, dass mysqlnd keine Verbindung zu MySQL 4.1+ mithilfe der alten unsicheren Authentifizierung herstellen kann, behoben sein und Sie sollten in der Lage sein, normal mit Ihren Webanwendungen zu arbeiten.

Problembehebung:mysqlnd kann keine Verbindung zu MySQL 4.1+ mithilfe der alten unsicheren Authentifizierung herstellen wurde zuletzt geändert:7. Februar 2017 von Esteban Borges
Cent OS
  1. Wie richte ich das MySQL-Master-Slave-Setup mit CentOS 7-Knoten ein?

  2. So erstellen Sie eine Datenbank in MySQL über die Befehlszeile

  3. So stellen Sie eine Remoteverbindung zu MySQL her

  4. So verbinden Sie einen Remote-Host mit dem ssh-Befehl

  5. So erstellen Sie eine MySQL-Datenbank mit der cPanel-API

So richten Sie eine Datenbank mit dem MySQL-Datenbankassistenten ein

So installieren Sie das neueste MySQL 8 in Ubuntu

So installieren Sie das neueste MySQL 8 auf Debian 11

So installieren Sie das neueste MySQL 8 unter Ubuntu 20.04

Anwendung kann keine Verbindung zur Datenbank herstellen

Wie man mit PHP eine Verbindung zu MySQL herstellt