URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 75102
[ Назад ]

Исходное сообщение
"php и подключения к mysql по ssl"

Отправлено Vladimir2000 , 10-Июл-07 17:15 
Всем доброго времени суток!!!
и.. собственно сабж
т.е... сейчас есть машина с mysql5.1 и есть машина с apache2.2 и php5, требуется что бы все соединения из php страничек к mysql шли по защищённому соединению
мои поиски ответа на вопрос, поддерживает ли php защищённые соединения успехом не увенчались

что есть:
- сгенерённые сертификаты по доке http://dev.mysql.com/doc/refman/5.0/en/ssl-options.html
- в /usr/local/etc/mysql/my.cnf, в сексцию [mysqld] добавленны опции
  ssl-ca = /usr/local/etc/mysql/ca-cert.pem
  ssl-cert = /usr/local/etc/mysql/server-cert.pem
  ssl-key = /usr/local/etc/mysql/server-key.pem
- добавлен пользователь
  grant all on *.* to user1@'%' identified by 'password' require ssl;

из командной строки с опцией --ssl-ca всё замечательно работает, т.е.
# mysql -hmydbserver --ssl-ca -uuser1 -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 31 to server version: 5.1.20-beta-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

однако попытка подключиться этим же пользователем из php не получилась
    $host     = "mydbserver";
    $user     = "user1";
    $password = "password";
    mysql_connect($host, $user, $password);

приводит к
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in /var/web_srv/local/myscript.php on line 27

Warning: mysql_query() [function.mysql-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /var/web_srv/local/myscript.php on line 28

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /var/web_srv/local/myscript.php on line 28
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

может кто-нибудь помочь либо в ответе на вопрос умеетли php защищённые соединения к mysql, либо в правильности подключения к mysql из php скриптов по защищённым соединениям?


Содержание

Сообщения в этом обсуждении
"php и подключения к mysql по ssl"
Отправлено Krivoy , 11-Июл-07 09:52 
Может consider upgrading MySQL client?
Или в my.cnf посмотреть /tmp/mysql.sock ли там?


"php и подключения к mysql по ssl"
Отправлено Vladimir2000 , 11-Июл-07 10:13 
>Может consider upgrading MySQL client?
>Или в my.cnf посмотреть /tmp/mysql.sock ли там?

дело в том, что сервер mysql и связка apache/php на разных серверах


"php и подключения к mysql по ssl"
Отправлено Krivoy , 11-Июл-07 10:26 
Сорри может я в этом деле чайник, но почему тогда пишет
Can't connect to local MySQL server
почему локал то??? Или РНР на все соединения ТАК ругается?


"php и подключения к mysql по ssl"
Отправлено Vladimir2000 , 11-Июл-07 10:32 
>Сорри может я в этом деле чайник, но почему тогда пишет
>Can't connect to local MySQL server
>почему локал то??? Или РНР на все соединения ТАК ругается?


я не специалист по исхлдным кодам php
но думаю, что ошибка в 28 строке не имеет значения
самое главное это ошибка в 27 строке
Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server; consider upgrading MySQL client in /var/web_srv/local/myscript.php on line 27

здесь выполняется функция mysql_connect и именно она не может подключиться по защищённому соединению
собственно по этому я и задал вопрос, php в принципе это умеет? если да, то, что нужно сделать?
подправить php.ini? перекомпелировать php? или что?


"php и подключения к mysql по ssl"
Отправлено Krivoy , 11-Июл-07 10:37 

>я не специалист по исхлдным кодам php
>но думаю, что ошибка в 28 строке не имеет значения
>самое главное это ошибка в 27 строке
>Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server;
>consider upgrading MySQL client in /var/web_srv/local/myscript.php on line 27
>
>здесь выполняется функция mysql_connect и именно она не может подключиться по защищённому
>соединению
>собственно по этому я и задал вопрос, php в принципе это умеет?
>если да, то, что нужно сделать?
>подправить php.ini? перекомпелировать php? или что?

Ну по фразе consider upgrading MySQL client можно призадуматься об обновлении РНР и при перекомпиляции оного внимательно посмотреть - а нет ли там по этому поводу какой-нить опции...


"php и подключения к mysql по ssl"
Отправлено Vladimir2000 , 11-Июл-07 17:47 
>
>>я не специалист по исхлдным кодам php
>>но думаю, что ошибка в 28 строке не имеет значения
>>самое главное это ошибка в 27 строке
>>Warning: mysql_connect() [function.mysql-connect]: Client does not support authentication protocol requested by server;
>>consider upgrading MySQL client in /var/web_srv/local/myscript.php on line 27
>>
>>здесь выполняется функция mysql_connect и именно она не может подключиться по защищённому
>>соединению
>>собственно по этому я и задал вопрос, php в принципе это умеет?
>>если да, то, что нужно сделать?
>>подправить php.ini? перекомпелировать php? или что?
>
>Ну по фразе consider upgrading MySQL client можно призадуматься об обновлении РНР
>и при перекомпиляции оного внимательно посмотреть - а нет ли там
>по этому поводу какой-нить опции...

спасибо за совет конечно, но если бы всё было так просто, проблема была бы уже решена...
я ведь не просто так в первом посте подробно расписал что к чему и указал, что не интернет, не доки/книги по php не дали ответа, поддерживает ли php подключения к mysql по защищённому каналу..
может я плохо смотрел/искал, может я чего то не допонял.. именно поэтому я обратился в форум (как и все остальные люди), а не за советом "призадуматься об обновлении РНР", кстати фраза эта не говорит об обновлении php, а говорит об обновлении mysql клиента
и теперь собственно мой совет вам.. прежде чем давать советы в форуме, почитайте(или перечитайте) _пожалуйста_ статью http://citforum.ru/howto/smart-questions-ru.shtml

есть такая возможность
в файл /etc/my.cnf (для linux) нужно добавить секцию
[client]
ssl-ca=/tmp/ca-cert.pem
ssl-cert=/tmp/client-cert.pem
ssl-key=/tmp/client-key.pem
каталог /tmp, естественно можно заменить на любой другой
файлы ca-cert.pem, client-cert.pem, client-key.pem, это сгенерированные файлы по указанной в первом посте ссылке на доку mysql
после добавления этой секции при подключении из командной строки, не требуется указывать параметр --ssl-ca, однако подключение из php по прежнему не работает (среди опций скрипта configure для php 4.4.7 есть --with-openssl и --with-mysql, они были и в прежнем моём php и в только что установленном)


"php и подключения к mysql по ssl"
Отправлено sparkman , 10-Апр-08 11:30 
http://dev.mysql.com/doc/refman/5.0/en/secure-connections.html
настраивается как клиент так и сервер