Соединяемся старым клиентом MySql с сервером выше 4й версии
Thursday, November 13th, 2008При попытке соединения с сервером базы данных Mysql версии 4.1 и выше с помощью php старых версий, который использует расширение mysql для работы с MySql ниже версии 4.1 можно получить следующее сообщение об ошибке:
Client does not support authentication protocol requested by server; consider upgrading MySQL client
А дело в том, что Mysql 5.0 и 4.1 используют протокол аутентификации, основанный на алгоритме хеширования паролей, отличный от предыдущих версий.
Поэтому, чтобы избавиться от ошибки можно либо обновить клиент до версии сервера, либо (если обновление клиента связано с определенными трудностями) создать юзера mysql со старым паролем или же обновить пароль существующему, используя функцию со старым алгоритмом хеширования. Воспользуемся данным sql запросом.
-
SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
Или используя UPDATE и FLUSH PRIVILEGES:
-
UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';
-
FLUSH PRIVILEGES;
Еще можно стартовать mysql c опцией --old-passwords, но я этот способ не считаю целесообразным.
Что же касается php старых версий, которые еще встречаются на серверах клиентов и в которых расширение mysql не поддерживает алгоритм хеширования версий mysql выше 4.0, то можно воспользоваться расширением mysqli (MySQL Improved Extension).
Почитать
- http://dev.mysql.com/doc/refman/5.0/en/old-client.html - официальное описание проблемы от mysql.