- Odeberte nebo okomentujte old_passwords =1 v my.cnf
Restartujte MySQL. Pokud tak neučiníte, MySQL bude nadále používat starý formát hesla, což bude znamenat, že hesla nemůžete upgradovat pomocí vestavěné funkce hash PASSWORD().
Staré hash hesla mají 16 znaků, nové mají 41 znaků.
-
Připojte se k databázi a spusťte následující dotaz:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
To vám ukáže, která hesla jsou ve starém formátu, např.:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
Všimněte si, že každý uživatel může mít více řádků (jeden pro každou jinou specifikaci hostitele).
Chcete-li aktualizovat heslo pro každého uživatele, spusťte následující:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
Nakonec vyprázdněte oprávnění:
FLUSH PRIVILEGES;
Zdroj:Jak opravit „mysqlnd se nemůže připojit k MySQL 4.1+ pomocí starého ověřování“ na PHP5.3