sql >> Databasteknik >  >> RDS >> Mysql

Fel:mysqlnd kan inte ansluta till MySQL 4.1+ med den gamla osäkra autentiseringen

  • Ta bort eller kommentera old_passwords =1 i my.cnf

Starta om MySQL. Om du inte gör det kommer MySQL att fortsätta använda det gamla lösenordsformatet, vilket kommer att innebära att du inte kan uppgradera lösenorden med den inbyggda PASSWORD()-hashfunktionen.

De gamla hasharna för lösenord är 16 tecken, de nya är 41 tecken.

  • Anslut till databasen och kör följande fråga:

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

Detta kommer att visa dig vilka lösenord som är i det gamla formatet, t.ex.:

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

Observera här att varje användare kan ha flera rader (en för varje värdspecifikation).

För att uppdatera lösenordet för varje användare, kör följande:

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

Slutligen, spola privilegier:

FLUSH PRIVILEGES;

Källa:Hur man åtgärdar "mysqlnd kan inte ansluta till MySQL 4.1+ med gammal autentisering" på PHP5.3



  1. Problem med att skapa främmande nyckel i Oracle

  2. Hur migrerar man en PostgreSQL-databas till en SQLServer-databas?

  3. Korrekt databasmodell för ett användarfeedbacksystem (ett intressant fall)

  4. Django ConnectionAbortedError:[WinError 10053] En upprättad anslutning avbröts av programvaran i din värddator