Возникла задача выполнять ресурсоемкие скрипты и результат записывать в БД на сайте. НО т.к. на хостинге оперативка ограничена, и перезжать на более дорогой тариф не хочется - решил поставить себе на комп wamp server, проверил скрипты - работают исправно (не жалуются что оперативки не хватило). Решил результат записать в БД, но получил облом - не смог подключиться. Хостеры сказали, что внешний доступ к БД запрещен, но можно подключиться с помощью SSH тунеля. Покопал в гугле и сделал тунель с БД с помощью библиотеки php_ssh2.dll, которую поставил себе на комп.
я так понял что после установки тунеля работать можно с базой с помощью функции ssh2_exec и отправлять команды, которые понимает ssh , а хотелось бы работать с базой обычными php командами - это возможно?
Т.к. в ssh я полный чайник, боюсь что-то делать, вдруг базу косячну(
"извращался" ли кто так ранее?
Спустя 26 минут, 15 секунд (22.04.2012 - 18:13) I++ написал(а):
Спустя 22 минуты, 26 секунд (22.04.2012 - 18:35) MailRes написал(а):
хз почему не нашел(((
но там с ошибкой написано, буду копать дальше
mysqli_connect() expects parameter 6 to be string
но там с ошибкой написано, буду копать дальше
mysqli_connect() expects parameter 6 to be string
Спустя 8 минут, 16 секунд (22.04.2012 - 18:44) ruzarh написал(а):
Так ты получается сам будешь парсить и сам заливать, я правильно понял? т.е. не в автоматическим режима а ручками? Если да то попробуй mysqlYog. Он подключается по ssh и можешь что угодно там творить.
Спустя 3 минуты, 46 секунд (22.04.2012 - 18:47) MailRes написал(а):
Да, сам по схеме: закачал файл по FTP, запустил скрипт, который файл парсит и сразу льёт его в БД.
А mysqlYog спасёт? Т.к. хочу автоматизировать процесс по максимуму. Как вариант (простой) можно на локальной машине завести БД, в неё парсить xls файлы, потом экспортировать таблицы, подключаться к своей основной базе и туда импортировать - но не хочу так. Замучаюсь каждый день так делать
А mysqlYog спасёт? Т.к. хочу автоматизировать процесс по максимуму. Как вариант (простой) можно на локальной машине завести БД, в неё парсить xls файлы, потом экспортировать таблицы, подключаться к своей основной базе и туда импортировать - но не хочу так. Замучаюсь каждый день так делать
Спустя 58 минут, 44 секунды (22.04.2012 - 19:46) MailRes написал(а):
if(!($con = ssh2_connect("my_ssh_host", 22))){
echo "fail: unable to establish connection\n";
} else {
if(!ssh2_auth_password($con, "ssh_user", "ssh_password")) {
echo "fail: unable to authenticate\n";
} else {
echo "okay: logged in...\n";
}
}
if(!ssh2_tunnel($con, 'mysql_host', 3306 ))
{echo "<br/>fail tunnel";} else {echo "<br/> success tunnel<br/>";}
$tunnel=ssh2_tunnel($con, 'mysql_host', 3306 );
mysql_connect('127.0.0.1',$username,$password) or die ("СОЕДИНЕНИЕ НЕ УСТАНОВЛЕНО");
Приведённый выше код не соединяется с базой, в чем может быть проблема?
В результате выполнения кода на экран выводится следующее:
okay: logged in...
success tunnel
СОЕДИНЕНИЕ НЕ УСТАНОВЛЕНО
1) Если в качестве хоста использую 127.0.0.1 то получаю ошибку: "Доступ запрещен для user@localhost
2) Если в качестве хоста использую "mysql_host", то получаю ошибку: "удалённый компьютер не ответил"
Спустя 10 минут, 1 секунда (22.04.2012 - 19:56) Игорь_Vasinsky написал(а):
на хостинге должен быть открыт к серверу БД "из вне"
проверяйте имя, логин, пароль.
проверяйте имя, логин, пароль.
Спустя 5 минут, 1 секунда (22.04.2012 - 20:01) MailRes написал(а):
1) на хостинге закрыть доступ к базе "из вне", но к базе можно подключиться через SSH туннель (это мне сказала техподдержка и на сайте хостинга написано)
2) правильные логин и пароль
3) раз прямой доступ закрыт - я начал копать на тему "как на php с помощью ssh туннеля подключиться к mysql"... если я всё правильно понял, то (скрипт, который я сюда запостил) я с помощью php подключаюсь к ssh, делаю туннель к базе, а к базе залогиниться не могу - не понимаю почему
p.s. через putty то можно попасть в базу, а через php не получается
2) правильные логин и пароль
3) раз прямой доступ закрыт - я начал копать на тему "как на php с помощью ssh туннеля подключиться к mysql"... если я всё правильно понял, то (скрипт, который я сюда запостил) я с помощью php подключаюсь к ssh, делаю туннель к базе, а к базе залогиниться не могу - не понимаю почему

p.s. через putty то можно попасть в базу, а через php не получается
Спустя 38 минут, 16 секунд (22.04.2012 - 20:39) I++ написал(а):
Зачем SSH хостер позволяет подключаться к базе из вне с помощью ssl?
Спустя 48 секунд (22.04.2012 - 20:40) ruzarh написал(а):
mysql_connect('localhost',$username,$password) or die ("СОЕДИНЕНИЕ НЕ УСТАНОВЛЕНО");
может надо установить localhost да и подключаешься ты не к той базе а к своей на той где скрипт выполняется. Тебе надо команду передать для подключения на ssh
Спустя 4 минуты, 29 секунд (22.04.2012 - 20:45) ruzarh написал(а):
$conect = ssh2_exec($con, ' mysql -u и так далее');
Спустя 4 минуты, 59 секунд (22.04.2012 - 20:50) MailRes написал(а):
Цитата (I++ @ 22.04.2012 - 18:39) |
Зачем SSH хостер позволяет подключаться к базе из вне с помощью ssl? |
с SSH и SSL я очень плохо знаком, так что не могу ничего сказать, кроме того, что хостинг Мастерхост
Спустя 2 минуты, 54 секунды (22.04.2012 - 20:53) MailRes написал(а):
дописал так:
как теперь прикрутить это к php чтоб с базой работать на привычных php функциях?
p.s. понятия не имею, что означают "-p -h" в запросе)) взял это из примера на сайте хостеров
$consshsql = ssh2_exec($con, 'mysql -u sql_user -p -h sql_host sql_DB_name');
как теперь прикрутить это к php чтоб с базой работать на привычных php функциях?
p.s. понятия не имею, что означают "-p -h" в запросе)) взял это из примера на сайте хостеров
Спустя 14 минут, 40 секунд (22.04.2012 - 21:07) ruzarh написал(а):
$conect = ssh2_exec($con, ' mysql -u NAMEUSER -p PASSWORD USE MyDataBase; INSERT INTO ..... ; ');Как то так наверное
Спустя 4 минуты, 29 секунд (22.04.2012 - 21:12) MailRes написал(а):
В эту сторону я накапал уже инфы, и как понял, если я напишу:
то запрос к базе то может и сделается, а как тогда вывести результат на экран в браузер?
$conect = ssh2_exec($con, ' mysql -u NAMEUSER -p PASSWORD USE MyDataBase; SELECT * FROM ..... ; ');
то запрос к базе то может и сделается, а как тогда вывести результат на экран в браузер?
Спустя 14 минут, 11 секунд (22.04.2012 - 21:26) I++ написал(а):
Попроси GovnoHost прикрепить к внешнему IP доступ.
P.S
Они до сих пор заставляют юзать php файлик для смены прав доступа?
Интересно они баг исправили с переполнением tmp из-за нерабочих квот при смене тех же прав.
А так же доступ к файлу со всеми юзерами, я так раньше самый свежий хост выбирал, где поменьше народу.
Кстати у них апач запускается от общих прав, но юзера ограничены. Лучше бы сделали форк от того юзера чей хост, как у нормальных хостеров.
P.S
Они до сих пор заставляют юзать php файлик для смены прав доступа?
Интересно они баг исправили с переполнением tmp из-за нерабочих квот при смене тех же прав.
А так же доступ к файлу со всеми юзерами, я так раньше самый свежий хост выбирал, где поменьше народу.
Кстати у них апач запускается от общих прав, но юзера ограничены. Лучше бы сделали форк от того юзера чей хост, как у нормальных хостеров.
Спустя 21 минута, 59 секунд (22.04.2012 - 21:48) MailRes написал(а):
к внешнему IP нельзя сказали, просил уже. даже за доп. плату отказали, а вот весь день мозг кипячу на эту тему. Уже бы давно скрипт написал, так нет же - продолжаю поиски на тему тунелирования. Т.к. думаю - полюбому должно быть решение.
Цитата |
Они до сих пор заставляют юзать php файлик для смены прав доступа? |
Не знаю, а что за права доступа? т.е. на что?
p.s. оффтоп - может подскажете хороший хостинг? т.к. есть там и с Гигом оперативки VPS, но без поддержки, и так чё случись буду голову ломать - как всё реанимировать??? а так пусть техподдержка парится.
вот и приходится велосипед изобретать (
Спустя 22 минуты, 54 секунды (22.04.2012 - 22:11) MailRes написал(а):
if($consshsql = ssh2_exec($ssh_conn, 'ssh -L 3306:mysql_host:3306 mysql_user@localhost'))
{echo ('ssh2_exec - SUCCESS!');} else {echo ('ssh2_exec - DENIED');}
Написал такой код, в надежде перенаправить по ssh соединение с базой данных на локальный хост, чтобы обычные функции пхп юзать, но безуспешно. На экране вижу "ssh2_exec - SUCCESS!", скорее всего означает, что команда отправилась, а вот выполнилась ли она правильно хз.
Спустя 37 минут, 29 секунд (22.04.2012 - 22:48) killer8080 написал(а):
Цитата (MailRes @ 22.04.2012 - 23:11) |
Написал такой код, в надежде перенаправить по ssh соединение с базой данных на локальный хост |
Ничего перенаправить ты не сможешь, стандарнтые расширения для работы с мускулом не станут работать через ssh туннель. Все что ты можешь таким образом сделать - это установить соединение и выполнять консольные команды на сервере. Работать таким образом с mysql это полный изврат. Если тебе нужно просто залить данные в базу, сливай данные в дамп
SELECT ... INTO OUTFILE 'file_name'
заливай дапм по фтп на сервер, и заливай в базу
LOAD DATA INFILE 'file_name' INTO TABLE ...
Надеюсь привилегии FILE этот чудо хостер клиентов не лишает

Спустя 20 минут, 8 секунд (22.04.2012 - 23:08) MailRes написал(а):
Эх... у них как раз на сайте написано, как сделать дамп базы и залить её обратно... Вот уже (расстроен) сижу читаю на тему - "Где лучше хоститься?"
Спустя 9 минут, 10 секунд (22.04.2012 - 23:18) killer8080 написал(а):
Цитата (MailRes @ 23.04.2012 - 00:08) |
Эх... у них как раз на сайте написано, как сделать дамп базы и залить её обратно... |
Спустя 14 часов, 34 минуты, 33 секунды (23.04.2012 - 13:52) MailRes написал(а):
Цитата (ruzarh @ 22.04.2012 - 19:15) |
А где же мой плюсик ?))) |
Поставил))
Цитата |
Так я ж тебе показал как примерно, читай про синтаксис SELECT ... INTO OUTFILE и LOAD DATA INFILE |
Ага про это ковырял, но проблема в том, что не смогу угадать в какое время БД будет не активна, т.к. с ней постоянно работают - добавляют/правят.
Её же целиком придётся заливать?
Спустя 38 минут, 12 секунд (23.04.2012 - 14:30) killer8080 написал(а):
Цитата (MailRes @ 23.04.2012 - 14:52) |
Ага про это ковырял, но проблема в том, что не смогу угадать в какое время БД будет не активна, т.к. с ней постоянно работают - добавляют/правят. Её же целиком придётся заливать? |
там есть опции CONCURRENT и LOW_PRIORITY, если нужно чтоб не тормозило работу.
Спустя 2 минуты, 56 секунд (23.04.2012 - 14:33) MailRes написал(а):
Т.е. я могу вытащить таблицу с сервера, закачать её к себе на локальную машину, обработать так как мне нужно и закачать её снова на сервер?
И все эти операции я смогу сделать с помощью php?
И все эти операции я смогу сделать с помощью php?
Спустя 13 минут, 45 секунд (23.04.2012 - 14:47) killer8080 написал(а):
Цитата (MailRes @ 23.04.2012 - 15:33) |
И все эти операции я смогу сделать с помощью php? |
При наличии привилегии FILE у юзера бд на сервере.
Спустя 1 час, 2 минуты, 15 секунд (23.04.2012 - 15:49) MailRes написал(а):
Спасибо! Буду дальше копать (предстоят бессонные ночи\))))