- Премахнете или коментирайте old_passwords =1 в my.cnf
Рестартирайте MySQL. Ако не го направите, MySQL ще продължи да използва стария формат на паролата, което ще означава, че не можете да надстроите паролите с помощта на вградената функция за хеширане PASSWORD().
Хешовете на старите пароли са 16 знака, новите са 41 знака.
-
Свържете се с базата данни и изпълнете следната заявка:
SELECT user, Length(`Password`) FROM `mysql`.`user`;
Това ще ви покаже кои пароли са в стария формат, напр.:
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
Забележете тук, че всеки потребител може да има няколко реда (по един за всяка различна спецификация на хост).
За да актуализирате паролата за всеки потребител, изпълнете следното:
UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';
И накрая, изчистете привилегиите:
FLUSH PRIVILEGES;
Източник:Как да коригирам "mysqlnd не може да се свърже с MySQL 4.1+ чрез старо удостоверяване" на PHP5.3