Соединяемся старым клиентом MySql с сервером выше 4й версии
November 13th, 2008 by Yuriy DrozdovПри попытке соединения с сервером базы данных 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.
Похожие статьи:
- Нет похожих статей
интересно зачем они поменяли алгоритм хеширования?
В целях безопасности, новый - более криптостойкий.
А не кажется ли вам дорогие Ira и Yuriy, что это баян и ошибке этой уже 3 года с начала выхода MySQL 5.
И, что значит php старых версий, я про такие не слышал. Может если уже пишете, так уточняйте информацию, каждая версия становиться старой, как только выходят новая.
Если учесть, что релиз mysql 4.1 вышел в 2003 году, то ошибке лет 5. Подписи к статье “Мегановость” я не ставил. Просто недавно столкнулся с этим, поэтому и написал. В моем случае версия php была 4.3.3
Спасибо, за уточнение.
Я считаю, что проблема не актуальна и тех кто пользуется php “старых” версий типа 4.3.3, уже нет или почти нет, так как я не вижу смысла не обновить php до последней стабильной версии 4.x.
Но если уже пишете про веб программирование, тогда хотелось бы видеть актуальные вещи, а не переписанные в сотый раз одни и те же темы.
Считаю тему вполне актуальной. В мире полно серверов с версией php 4.3.x. Если все работает и на сервере около сотни сайтов, зачем менять версию php?
Следует заметить что дело не в версии PHP, а именно в версии mysqlib, c которой собран PHP. Иногда PHP 4.3.5 бывает собран c MySQL 5.0
согласен