На Главную

Соединяемся старым клиентом 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 запросом.

SQL:
  1. SET PASSWORD FOR 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

Или используя UPDATE и FLUSH PRIVILEGES:

SQL:
  1. UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') WHERE Host = 'some_host' AND User = 'some_user';
  2. FLUSH PRIVILEGES;

Еще можно стартовать mysql c опцией --old-passwords, но я этот способ не считаю целесообразным.

Что же касается php старых версий, которые еще встречаются на серверах клиентов и в которых расширение mysql не поддерживает алгоритм хеширования версий mysql выше 4.0, то можно воспользоваться расширением mysqli (MySQL Improved Extension).

Почитать

Автор: Yuriy Drozdov

Похожие статьи:

  • Нет похожих статей

RSS комментариев | Trackback URI

8 Комментариев

Comment by Ira Sribna Subscribed to comments via email
2008-11-13 14:54:22

интересно зачем они поменяли алгоритм хеширования?

 
Comment by Yuriy Drozdov
2008-11-13 14:56:06

В целях безопасности, новый - более криптостойкий.

 
Comment by Yaroslav Vorozhko Subscribed to comments via email
2008-11-14 10:45:53

А не кажется ли вам дорогие Ira и Yuriy, что это баян и ошибке этой уже 3 года с начала выхода MySQL 5.
И, что значит php старых версий, я про такие не слышал. Может если уже пишете, так уточняйте информацию, каждая версия становиться старой, как только выходят новая.

Comment by Yuriy Drozdov
2008-11-14 10:58:31

Если учесть, что релиз mysql 4.1 вышел в 2003 году, то ошибке лет 5. Подписи к статье “Мегановость” я не ставил. Просто недавно столкнулся с этим, поэтому и написал. В моем случае версия php была 4.3.3

 
 
Comment by Yaroslav Vorozhko Subscribed to comments via email
2008-11-14 11:08:07

Спасибо, за уточнение.
Я считаю, что проблема не актуальна и тех кто пользуется php “старых” версий типа 4.3.3, уже нет или почти нет, так как я не вижу смысла не обновить php до последней стабильной версии 4.x.
Но если уже пишете про веб программирование, тогда хотелось бы видеть актуальные вещи, а не переписанные в сотый раз одни и те же темы.

Comment by Yuriy Drozdov
2008-11-14 11:13:26

Считаю тему вполне актуальной. В мире полно серверов с версией php 4.3.x. Если все работает и на сервере около сотни сайтов, зачем менять версию php?

 
 
Comment by hayk Subscribed to comments via email
2008-11-14 15:54:36

Следует заметить что дело не в версии PHP, а именно в версии mysqlib, c которой собран PHP. Иногда PHP 4.3.5 бывает собран c MySQL 5.0

Comment by Yuriy Drozdov
2008-11-14 15:58:50

согласен

 
 

Извините, комментарии закрыты.