MySQL 4.1.7 & client upgrade

Panchous

Павел
MySQL 4.1.7 & client upgrade

Проблема в следующем:
обновил MySQL с 4.0.21 до 4.1.7 и перестали работать старые функции типа mysql_*.
Подскажите, новая версия не имеет совместимости с предыдущими?
Для нормальной работы старых скриптов надо обратно 4.0.* ставить?
При этом выдается следующий ответ:

Client does not support authentication protocol requested by server; consider upgrading MySQL client
 

Panchous

Павел
Забыл добавить:
Windows Server 2003 | Apache 2.0.52 | PHP 5.0.2
Есть расширения mysql.dll и mysqli.dll
__________
без новой сборки никак?
 

Profic

just Profic (PHP5 BetaTeam)
Panchous
В дополнение ответа Тони.
Можно еще попробовать использовать php_mysqli.dll, она линкуется под виндами в либой от 4.1.2 по моему и нормально работает с новыми хешами паролей.
Но однако в коде придется все mysql_* заменить на mysqli_*, и не для всех функций из mysql есть аналоги из mysqli.
 

Panchous

Павел
Всем спасибо за советы!
Еще вопрос:
Как Вы думаете, когда возможно будет увидеть поддержку MySQL 4.1.* у хостеров?
может кто уже обещал?
 

Tyler Durden

Guest
У меня та же проблема... тока под Линухой.
Установил Red Hat Linux 7.3 (сервер)
Ядро - 2.4.18-3.
Ни PHP, ни Апача, ни Mysql не устанавливал...
Скачал:
- MySQL-server-4.1.7-0.i386.rpm
- MySQL-client-4.1.7-0.i386.rpm
- php-4.3.9.tar.gz
- apache_1.3.31.tar.gz

Ставлю оба RPM'а... Перезагрузил машину, демон (mysqld) запустился...
Настроил пароль для root'а (mysqladmin -u root password мой_пароль)
Создал файл /root/.my.cnf, в который записал:

[client]
password=мой_пароль

Распаковываю оба архива (apache и php) в одну папку и выполняю:

# cd apache_1.3.31
# ./configure --prefix=/usr/local/apache
# cd ../php-4.3.9
# ./configure --with-apache=../apache_1.3.31 --with-mysql
# make
# make install
# cd ../apache_1.3.31
# ./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
# make
# make install

Поставил phpMyAdmin-2.6.0-pl2
При попытке соединиться с сервером MySQL появляется сообщение

Client does not support authentication protocol requested by server; consider upgrading MySQL client

В phpinfo() в разделе MySQL вижу "Client API version = 3.23.49"
Видимо, я неправильно собрал PHP... В документации к MySQL написано, что при сборке PHP необходимо вручную прописывать mysql-extension. А где его найти, я не знаю...

Пробовал собирать PHP следующим образом:

# ./configure --with-apache=../apache_1.3.31 --with-mysql=/var/lib/mysql

Но тогда при сборке получал сообщение:

configure: error: Cannot find MySQL header files under /usr/lib/mysql

Если кто-нибудь столкнулся с такой проблемой, подскажите, плиз, что делать???

P.S. Сейчас прочитал о том, что в новых версиях пхп (от 4.1.1) перестали поставлять либу для работы с MySQL. Тогда вопрос, а где ее взять???
 

Nirva

Dmitry Polyakov
хм. в дистрибутиве пятерки (вин) екстеншны лежат в корне, среди которых и libmysql и libmysqli.
 

alpine

Новичок
Tyler Durden
>> Client does not support authentication protocol requested by server; consider upgrading MySQL client
Иди по ссылке которую дал Тони в четвертом посте
>> В phpinfo() в разделе MySQL вижу "Client API version = 3.23.49"
>> configure: error: Cannot find MySQL header files under /usr/lib/mysql
Тебе нужны заголовочные файлы (например mysql.h)

А что тебе мешает сделать дамп нужных баз, снести старый мускуль, поставить новый, влить дамп, скомпилить пхп?
 

Tyler Durden

Guest
А что тебе мешает сделать дамп нужных баз, снести старый мускуль, поставить новый, влить дамп, скомпилить пхп?
Так в том-то и дело, что у меня нет старого MySQL... не с чего делать дамп.
Я поставил систему "с нуля". И ставлю новый MySQL. Тока не знаю, как собрать пхп с нужными либами... К примеру, что писать при сборке ./configure --with-mysql=???? В мане написано --with-mysql[=BASE_DIR]. Я ставил из RPM-ов, значит BASE_DIR=/var/lib/mysql... Пишет, что header'ов по этому пути нет...
Тебе нужны заголовочные файлы (например mysql.h)
А где их взять??? Подскажи, плиз...
А если просто писАть ./configure --with-mysql, то подключается встроенная либа (3.23.49):confused:
 

alpine

Новичок
Tyler Durden
Скажи у себя в консоли:
Код:
rpm -q mysql-devel
Что выводит?
 

tony2001

TeaM PHPClub
если ты собираешь РНР из исходников - да, там все хидеры лежат.
 

alpine

Новичок
tony2001
У меня тоже
PHP:
<?php phpinfo(8); ?>
"Client API version = 3.23.49"
а
Код:
rpm -q mysql
mysql-4.0.18-32
Меня должно это волновать?
 

tony2001

TeaM PHPClub
>У меня тоже ""Client API version = 3.23.49""
потому, что собрано либо со старыми либами, либо с bundled версией (т.е. --with-mysql).
если всё работает - чего волноваться? =)
протокол поменялся только в 4.1, насколько мне известно.
 

alpine

Новичок
>> если всё работает - чего волноваться? =)
спасибо что успокоил :)

-~{}~ 30.10.04 11:47:

>> потому, что собрано либо со старыми либами, либо с bundled версией
имеется в виду это:
MYSQL_MODULE_TYPE builtin
?
>> (т.е. --with-mysql).
угу так и собирал

-~{}~ 30.10.04 11:57:

из мана:
---------------------------------------------------
Установка
Используя директиву --with-mysql[=DIR] вы можете включить в PHP поддержку СУБД MySQL.

В PHP 4, директива --with-mysql включена по умолчанию. Чтобы отключить её, используйте директиву конфигурации --without-mysql. Кроме того, в PHP 4, при включении директивы без указания пути к папке установки MySQL, PHP будет использовать встроенную библиотеку MySQL-клиента. В Windows специальные DLL отсутствуют, клиент всегда встроен в PHP4. При использовании приложений использующих MySQL (к примеру, auth-mysql) не стоит использовать встроенную библиотеку -- укажите путь к папке установки MySQL, что будет выглядеть примерно так: --with-mysql=/path/to/mysql. Это заставит PHP использовать библиотеку, установленную MySQL, что позволит избежать любых конфликтов.

В PHP 5 поддержка MySQL больше не включена по умолчанию, кроме того в нём отсутствует встроенная библиотека-клиент. Подробнее о причине можно прочитать в FAQ.

Расширение не работает с MySQL версиями превышающими 4.1.0. Для этого используйте MySQLi.
----------------------------------------------------
Тоесть ему необходимо собирать с --with-mysqli ?
 

Tyler Durden

Guest
Пробую собрать с:
# ./configure --with-mysql=/usr - выполнено
# make - выводит ошибку:

ext/mysql/php_mysql.o: In function `zif_mysql_create_db':
/root/my_s/php-4.3.9/ext/mysql/php_mysql.c:1160: undefined reference to `mysql_create_db'
ext/mysql/php_mysql.o: In function `zif_mysql_drop_db':
/root/my_s/php-4.3.9/ext/mysql/php_mysql.c:1202: undefined reference to `mysql_drop_db'
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php] Ошибка 1


/root/my_s - папка, в которую я распаковал дистрибутив пхп.

-~{}~ 30.10.04 12:03:

Тоесть ему необходимо собирать с --with-mysqli ?
Щас попробую...
 
Сверху