Соединяемся старым клиентом MySql с сервером выше 4й версии

Nov 13, 2008 12:22


Originally published at Sribna. Please leave any comments there.

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

PLAIN TEXT
SQL:


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


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

PLAIN TEXT
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).
Почитать

mysql

Previous post Next post
Up