Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обращение к MySQL из PHP, не могу соединиться 
V
    Опции темы
Kludge
Дата 12.1.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.1.2006

Репутация: нет
Всего: нет



smile через MS БД работает. проверено

пришло время обращаться к БД через PHP.
Код

<?
    $link = mysql_connect("localhost", "root", "mypass")
        or die("Не могу соединиться");
    print ("Соединение прошло успешно");
    mysql_close($link);
?>

Цитата

Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\Sites\home\localhost\www\anketa.php on line 2
Не могу соединиться


Пробовал второй способ как обычно через MS
Цитата

-uroot -pmypass


Код

<?
    $link = mysql_connect("localhost", "-uroot", "-pmypass")
        or die("Не могу соединиться");
    print ("Соединение прошло успешно");
    mysql_close($link);
?>

Цитата

Warning: mysql_connect(): Access denied for user '-uroot'@'localhost' (using password: YES) in C:\Sites\home\localhost\www\anketa.php on line 2
Не могу соединиться


последняя картина вроде как приятнее чем первая, но ...

Подскажите пожалуйста, что я не так делаю.

MySQL как служба работает.
на компе стоит Апач, PHP 4, MySQL 4.1
PM MAIL ICQ   Вверх
mr.fox
Дата 12.1.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: 1
Всего: 2



открой файл my.ini и добавь туда такую строку
Цитата

old_passwords

в поле mysqld
перезапусти серв, и будет тебе счастье
PM MAIL WWW ICQ   Вверх
Kludge
Дата 12.1.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.1.2006

Репутация: нет
Всего: нет



smile
неа, не хотит
PM MAIL ICQ   Вверх
mr.fox
Дата 12.1.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: 1
Всего: 2



Цитата(Kludge @ 12.1.2006, 20:57 Найти цитируемый пост)

$link = mysql_connect("localhost", "root", "mypass")

подключаться надо только так
Цитата(Kludge @ 12.1.2006, 20:57 Найти цитируемый пост)

Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in C:\Sites\home\localhost\www\anketa.php on line 2
Не могу соединиться

а покажи второю строчку кода
PM MAIL WWW ICQ   Вверх
Illuminaty
Дата 12.1.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: 3
Всего: 56



mr.fox, насколько я умею считать, в коде
Цитата(Kludge @ 12.1.2006, 21:57 Найти цитируемый пост)
Код
<?
    $link = mysql_connect("localhost", "root", "mypass")
        or die("Не могу соединиться");
    print ("Соединение прошло успешно");
    mysql_close($link);
?>
вторая строчка - это $link = mysql_connect("localhost", "root", "mypass") smile

Это сообщение отредактировал(а) Illuminaty - 12.1.2006, 22:35
PM MAIL ICQ   Вверх
Mal Hack
Дата 12.1.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



PM ICQ   Вверх
Illuminaty
Дата 12.1.2006, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: 3
Всего: 56



Скорее всего, судя по
Цитата(Kludge @ 12.1.2006, 21:57 Найти цитируемый пост)
Client does not support authentication protocol requested by server; consider upgrading MySQL client
надо скомпелировать PHP с ключом --with-mysql=/path/to/mysql, т.е. при PHP использует свою библиотеку, а надо, чтобы использовал библиотеку, установленную MySQL.

PM MAIL ICQ   Вверх
Kludge
Дата 13.1.2006, 07:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.1.2006

Репутация: нет
Всего: нет



вот эта вещь не хочет

line 8
Цитата

SET PASSWORD FOR $login@localhost = OLD_PASSWORD(‘$pass’);


выдает вотакое:
Цитата

Parse error: syntax error, unexpected T_STRING in C:\Sites\home\localhost\www\anketa.php on line 8


Цитата

надо скомпелировать PHP с ключом --with-mysql=/path/to/mysql, т.е. при PHP использует свою библиотеку, а надо, чтобы использовал библиотеку, установленную MySQL.

а это как? есть где почитать как это сделать?
в php.ini БД подключена, но все равно не хочет, а через консоль все нормально (тока ж мне надо к РHP прикрутить smile

Это сообщение отредактировал(а) Kludge - 13.1.2006, 07:33
PM MAIL ICQ   Вверх
Mal Hack
Дата 13.1.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Kludge обрати внимание на то, как написано в топике, на который я дал ссылку.
Цитата
SET PASSWORD FOR login@localhost = OLD_PASSWORD(‘something’);

И что пишешь ты. Это пишется в файлах my.ini или my.cnf
PM ICQ   Вверх
Kludge
Дата 13.1.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.1.2006

Репутация: нет
Всего: нет



ну приписываю это дело в файл my.ini, и тогда БД как служюа вообще не запускается

тупость какая-то, неужели нельзя изготавливать уже готовые пакеты типа MySQL+PHP+сервер

дело дрянь . . .
PM MAIL ICQ   Вверх
Mal Hack
Дата 13.1.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 8
Всего: 261



Цитата(Kludge @ 13.1.2006, 16:20 Найти цитируемый пост)

ну приписываю это дело в файл my.ini, и тогда БД как служюа вообще не запускается

Значит не правильно пишешь. Что мешает запустить mysqld из консоли и посмотреть ошибку?
PM ICQ   Вверх
Kludge
Дата 13.1.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 11.1.2006

Репутация: нет
Всего: нет



Вот ответы на все наши беды и несчастья!! smile
Ошибка при подключении к серверу: Client does not support authentication protocol

Начиная с версии 4.1, в My SQL используется новый протокол аутентификации. В новом протоколе алгоритм хеширования данных аутентифмкации отличается от алгоритма более ранних версий сервера My SQL. По сути вся проблема сводится к тому, что хеш пароля
“mypass” в версиях старше 4.1 (т.е. 4.1.*, 5.0.* и т.д.) имеет вид *6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4 (строка длиннее 41 байта), и тот же пароль “mypass” в версиях младше 4.1. (т.е. 4.0.*, 3.23.* и т.д.) имеет вид 6f8c114b58f2ce9e (строка 16 байт)

Теперь возникает ситуация. Вы обновляете сервер до версии старше 4.1., а клиент у Вас остается старый. Вы все правильно установили, сервер нормально запустился. Вы запускаете клиента, вводите логин и пароль соответствующей учетной записи, нажимаете Enter, Ваш СТАРЫЙ клиент хеширует данные авторизации по СТАРОМУ алгоритму и передает их на сервер. Сервер принимает эти данные и сранивает их с данными из таблицы mysql.user. В результате такого сравнения сервер видит, что хеши паролей не совпадают (всего 16 байт, вместо ожидаемых, как минимум, 41-го байта). Вследствие чего, сервер выдает вполне информативное сообщение:

Client does not support authentication protocol requested by server; consider upgrading MySQL client
Что бы решить возникшую проблему, можно пойти по одному из следующих путей:

Обновить всех клиентов (их библиотеки) до версии 4.1.1 или старше. Этот вариант идеальный, но не всегда подходит, потому что не для всех приложений существуют соответствующие обновленные библиотеки.
Создать для «старых» клиентов учетные записи, которые хранят хеш пароля в старом формате.
Для каждой учетной записи задать хеш пароля в старом формате. Это делается с помощью одной из двух конструкции:
Цитата

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

или

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

Задать серверу в файле конфигурации (my.ini, my.cnf) директиву, которая указывает серверу использовать старый алгоритм хеширования пароля. Эта директива:
Цитата
-- old-passwords option

При этом не забудьте, что Вам нужно будет конвертировать хеши паролей из нового формата в старый формат. Это нужно будет сделить для всех учетных записей, у которых хеш пароля уже хранится в новом формате.
Для того, что бы выбрать пользователей, у которых хеши паролей хранятся в новом формате нужно написать запрос вида:
Цитата

SELECT Host, User, Password FROM mysql.user WHERE LENGTH(Password) > 16;

Далее, для каждого пользователя в полученной таблице вы конвертируете пароль любым из вариантов, предложенным пунктом выше.

--------------------------------------------------------------------------------
P.S.
Если Вы программируете на языке PHP и версия языка младше версии 5.1, то знайте, что расширение My SQL использует старый протокол аутентификации, т.е. Вам придется работать со старым протоколом аутентификации, и лучше всего перевести сервер в режим старого протокола авторизации. В PHP версий старше 5.1. существует расширение mysqli, которое поддерживает новый протокол аутентификации.
Не забудьте, что таблица mysql.user хранит хеши паролей. Эти хеши получены с помощью алгоритмов необратимого шифрования. Из этого следует, что Вы никогда не узнаете, какой пароль был источником для данного хеша и Вам придется создавать новые пароли для учетных записей. После создания паролей сообщите новые данные учетных записей всем пользователям этих учетных записей.

взято отсюда http://phpclub.ru/faq/wakka.php?wakka=MySQ...word&v=16ec
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0562 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.