Большой Воронежский Форум
» Веб-дизайн>Трабла с MySQL
likerus 23:53 25.01.2007
Такое дело, начиная с версии 4,1 в мускуле меняется пердача пароля и старые приложения не могут подключится к базе данных выдает ошибку:

Сообщение от :
mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading

Выход: либо поставить старую версию мускула, либо обновить клиент. Первое оч трудно осуществимо ибо качать 40 метров накладно, а больше нигде найти не удается. А вот как обновить клиент я не знаю. Собсно хочу настроить статистику для контры Psychostats 2, она написан на перле и нуно как я понял обновить именно перл, но какие модули и откуда качать не знаю. Помогите. Так же в инете надыбал такую инфу:

Сообщение от :
B.2.3. Client does not support authentication protocol

MySQL 5.0 uses an authentication protocol based on a password hashing algorithm that is incompatible with that used by older (pre-4.1) clients. If you upgrade the server from 4.0, attempts to connect to it with an older client may fail with the following message:
shell> mysql
Client does not support authentication protocol requested
by server; consider upgrading MySQL client

To solve this problem, you should use one of the following approaches:

Upgrade all client programs to use a 4.1.1 or newer client library.

When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.

Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function:
mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');

Alternatively, use UPDATE and FLUSH PRIVILEGES:
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')
-> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;

Substitute the password you want to use for â?œnewpwdâ?� in the preceding examples. MySQL cannot tell you what the original password was, so you'll need to pick a new one.

Tell the server to use the older password hashing algorithm:

Start mysqld with the --old-passwords option.

Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query:
mysql> SELECT Host, User, Password FROM mysql.user
-> WHERE LENGTH(Password) > 16;

For each account record displayed by the query, use the Host and User values and assign a password using the OLD_PASSWORD() function and either SET PASSWORD or UPDATE, as described earlier.

Так вот у меня после этих манипуляций ваще пароль не получается сменить, помогите, напишите как должен выглядеть код для root-a localhost-a например 111. Кстати вот ссылка на страничку http://mirror.mix.su/pub/mysql/doc/r...ld-client.html
likerus 00:04 26.01.2007
Заметил интересную вещ психостат говорит что у меня
DBD-mysql v.2.1004
DBI v.1.37
но на оф. сайте доступны лишь
DBD-mysql v.2.9002
DBI v.1.25
так что вариант с обновлением наверно отпадает, помогите с кодом, что бы перейти на работу со "старими " паролями в мускуле.
Userator 08:21 26.01.2007
Входишь как 'root':
mysql -u root
Выбираешь базу данных, в нашем случае mysql:
use mysql
меняешь пароль для локального пользователя 'root':
SET PASSWORD FOR root@"localhost" = PASSWORD('здесь пароль');

Если хочешь сменить и логин и пароль то
Входишь как 'root' в базу 'mysql':
mysql -u root mysql
меняешь пароль и логин для локального пользователя 'root'
insert into user (Host, User, Password) values ('localhost', 'здесь логин', PASSWORD('здесь пароль'));
И обновляешь привилегии:
flush privileges;
netwind 08:44 26.01.2007
activeperl что ли?
Поставь модуль через ppm, он все скачать должен свежее, несмотря на то что на сайте у них написано.
Впрочем, он закачает всякие индексы аж на пару мегов, так что забудь о своей идее вообще.
likerus 13:18 26.01.2007

Сообщение от :
так что забудь о своей идее вообще

Это о какой идее я должен забыть?

Сообщение от :
SET PASSWORD FOR root@"localhost" = PASSWORD('здесь пароль');

А тут как я понял, если следовать мануалу приведенному мною выше, то вместо = PASSWORD('здесь пароль'); нужно подставить = OLD_PASSWORD('здесь пароль'); верно?
Vital_N 14:03 26.01.2007

Сообщение от likerus:
Это о какой идее я должен забыть?
А тут как я понял, если следовать мануалу приведенному мною выше, то вместо = PASSWORD('здесь пароль'); нужно подставить = OLD_PASSWORD('здесь пароль'); верно?

уважаемый - читайте маны - они рулят
http://dev.mysql.com/doc/refman/4.1/en/old-client.html
likerus 16:58 26.01.2007

Сообщение от :
уважаемый - читайте маны - они рулят
http://dev.mysql.com/doc/refman/4.1/en/old-client.html

Уважаемый читай топики цитата

Сообщение от :
Кстати вот ссылка на страничку http://mirror.mix.su/pub/mysql/doc/r...ld-client.html

Кстати всем спасибо, подключил, все работает помогла строчка:
SET PASSWORD FOR root@"localhost" = OLD_PASSWORD('******');
Вверх