Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Подключение к удаленной БД


Автор: Sarkaznik 15.8.2010, 13:50
Допустим есть сайт А где лежат файлы сайта и сайт Б на чьем хосте лежат БД (MySQL)
задача, НЕ!!! указывая прямые пути, логин, пароля, в файле конекта сайта А к базам данных сайта Б, все же получать к ним доступ ?

То есть нужно настроить так файл подключения сайта А к БД сайта Б что бы хозяин сайта А при желании покапавшись в своем сайте - не получил в свое распоряжения пароли и логины напрямую к БД сайта Б.

Автор: skyboy 15.8.2010, 16:25
обязательно "прямой" доступ как возможность выполнять произвольные запросы на удаленной БД? или все же список допустимых действий ограничен явно?

Автор: Sarkaznik 15.8.2010, 17:06
Цитата(skyboy @ 15.8.2010,  16:25)
обязательно "прямой" доступ как возможность выполнять произвольные запросы на удаленной БД? или все же список допустимых действий ограничен явно?

первый вопрос не понял формулировку!
допустимые действия ограничены!

я просто не знаю как объяснить еще яснее,
у меня есть заказчик сайта, сайт ему написан допустим, но! есть информация которую я выгружаю к нему на сайт из свой БД на своейм хостинге, для того что бы выгружалась инфа к нему на сайт щас в файле конекта его сайта прописаны пути к моей БД базы логины и пароли,
логично что я не хочу отдавать ему сайт с такой информацией на борту...

так вот:
1. КАК мне и главное что прописать в его файле конекта что бы информацию он с моих БД получал на сайт,
но при этом он не знал прямых путей, логинов, паролей к моим БД ??

2. как и опять же главное что прописать, что бы допустим некоторые действия удаленные к моей бд были не полными,
допустим разрешено добавление новых данных, запрещено удаление существующих и т.д.
реализовать это можно опять же лишь по средством прав созданной учетке на моем хостинге к бд или возможны другие варианты ?
что делать если учетка на хостинге вообще одна, ну не дает хостер больше одной скажем ?

3. Если быть точнее то получатель информации с моей бд - в перспективе не один, уже как минимум два сайта,
мне по сути надо защитить свою бд от проникновения, ну и  ограничить некоторые права, в общем все..

знаю про файлик my.cnf суть настройки в нем тоже в общем понятна, но по средством его я могу лишь назначит порт и ip с которых разрешен/запрещен конект, имеет ли он возможность настройки прав пока не понял...


Автор: skyboy 15.8.2010, 19:42
я уже понял тебе, а теперь объясню свой вопрос: положим, у тебя есть удаленная база-справочник предприятий. и есть клиент.
если данные, которые может запросить клиент, никак не ограничены - фильтрация, сортировка, группировка и прочее, то есть дать возможность выполнять запросы SQL напрямую - единственный вариант, то рациональным, с моей точки зрения решением будет новый пользователь БД с ограничениями в правах(естественно, у клиента логин/пароль будут храниться в явном виде) и для усиления безопасности ограничить подключение одним IP.
если запросы клиента - ограниченное множество, то можно вместо прямого подключения клиента в твоей БД реализовать какой-то протокол обмена "запрс-данные" в отрыве от SQL. Например, SOAP или "простой" XML. Или даже CSV. Пример: клиент делает запрос на адрес "твой-сервер/get_items_list.php?filter=A", а РНР скрипт вернет в виде списка текстом все элементы, которые начинаются на "А". Или ещё как. 
В твоем варианте(ограничение на количество пользователей БД и прочие ограничения) я бы рекомендовал второй вариант.

Автор: Sarkaznik 15.8.2010, 21:07
skyboy, уточню

1 вариант твой это
путем создания нескольких пользователей бд (1й - админ, 2й - скажем Юзер (без прав удаления и редактирования и т.д.)) 
далее в my.cfg на свой хосте я прописываю ип сайта клиента и даем ему доступ тем самым к бд
а в файле конект сайта клиента я прописываю пусть, пасс с логином (Юзера) к моей бд
если все так - то вопрос такой, допустим сайтов 3-5 + смогут ли они все ходить под одним логином (Юзера) к моей бд,
при условии конечно что я пропишу им доступ по ip всем... или для каждого сайта создавать отдельный логин, как это сможет отобразиться на скорости обработки данных ?



Автор: skyboy 15.8.2010, 22:21
Цитата(Sarkaznik @  15.8.2010,  20:07 Найти цитируемый пост)
далее в my.cfg на свой хосте я прописываю ип сайта клиента и даем ему доступ тем самым к бд

ограничение по IP задаются там же, где и права для создаваемого пользователя БД.
Цитата(Sarkaznik @  15.8.2010,  20:07 Найти цитируемый пост)
или для каждого сайта создавать отдельный логин, как это сможет отобразиться на скорости обработки данных ?

ты посмотри, какв mysql связываются вместе логин, пароль, ip и права доступа. а то ты просишь меня цитировать мануал. 

Автор: OlgaNaft 17.8.2010, 18:53
Ограничение по IP на хосте-доноре (где расположена БД) - самы оптимальный вариант в данной ситуации!

Автор: Sarkaznik 18.8.2010, 22:37
ограничение в рамках my.cnf все понятно

теперь вопрос такой, кто имел дело с Zend или что то может пояснить ?
интересно собственно его конкретная часть пою проблему
Zend Guard (ранее назывался Zend Encoder) — позволяет закодировать скрипт в байт-код, который потом можно использовать точно также как и обычный, за исключением возможности его отредактировать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)