Здравствуйте, у меня есть уникальная настройка для веб-ап, которая мне нужна, чтобы опустить голову.
У меня есть два сервера, которым нужно будет разговаривать друг с другом, сервер A будет размещать фактическое приложение на основе PHP; Сервер B будет содержать базу данных MySQL и сведения о соединении с сервером. Сервер B также будет находиться в закрытой сети, так что только люди в локальной сети смогут получить доступ к серверу, тогда как сервер A будет основан на сети.
Если посетитель имеет доступ к локальной сети для сервера B, он должен иметь возможность через сценарий на сервере A подключиться к базе данных на сервере B и получить доступ к ней и завершить доступ к ней.
Мой первый вопрос: возможно ли это? Я думаю, что это не на 100% уверен.
Во-вторых: как я могу написать script для доступа к серверу B script? Это похоже на доступ к включенному файлу или это будет удаленный вызов https? Я просто не уверен, как это сделать.
Любые советы очень ценятся!
Спасибо заранее!
Удаленное подключение к базе данных MySQL не должно быть проблемой. Вот довольно подробное руководство Включение удаленного доступа к MySQL. Я смог заставить это работать с помощью простой настройки в WHM, называемой дополнительными хостами доступа к MySQL. При посещении этой области с сервера B вы можете добавить IP-адрес сервера A, позволяя серверу A подключиться к базе данных сервера B с помощью этого формата: mysql_connect("IP Address of Server B","DB_username","DB_pass")
или независимо от вашей предпочтительной функции подключения к MySQL.
Если это не работает сразу, вам, возможно, придется внести некоторые изменения в настройки брандмауэра, но, насколько мне известно, вам должно быть возможно.
Прежде всего, это не хорошая архитектура для доступности. Если бы у вас была только одна машина, на которой работали как PHP, но и СУБД, тогда у вас есть одна точка отказа. Это не хороший сценарий доступности. С PHP и DB на отдельных машинах у вас теперь есть 2 единственных пункта отказа! Хуже!!
Но мы оставим это сейчас.
Да, было бы возможно, чтобы доступ к воротам через PHP, но PHP не реализует mysql-протокол, поэтому вам придется либо
1) сделать очень много программирования для реализации прокси-сервера mysql с дополнительной функциональностью.
2) обновите таблицу разрешений mysql, чтобы позволить удаленному хосту на временной основе
Действительно, вам не нужен доступ к вашему веб-серверу вне вашей подсети.
Однако, если машина имеет доступ к "локальной сети", все, что вам нужно сделать, это отказаться от отражателя порта где-то в этой сети, а затем указывать на них вместо СУБД. СУБД будет видеть адрес клиента так же, как и везде, где работал рефлектор порта (он может даже работать на другом порту самого сервера СУБД.
Однако нам нужно будет узнать намного больше о том, что вы подразумеваете под "доступом к локальной сети"
Я не уверен, но я не думаю, что это возможно с помощью PHP. PHP является сторонним сервером, поэтому на сервере, который должен иметь доступ к серверу mysql, клиент не входит в игру...
Существует много способов защитить сервер mysql, чтобы принимать соединение только с сервера. Мысль...