Android - подключение к базе данных mySQL через локальную сеть без использования веб-сервера

Я хочу иметь несколько клиентов, которые подключаются к серверу через локальную сеть, и получить доступ/изменить базу данных mySQL на сервере.

Как мне это сделать? Можете ли вы, ребята, предоставить некоторые ресурсы/ссылки, которые я мог бы исследовать по теме.

Ответ 1

Чтобы ответить на ваш вопрос, вы должны иметь возможность подключиться к базе данных mysql, добавив драйвер jdbc в свой проект в виде файла jar в Android Studio.

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

Проблемы безопасности:

  • Вы открываете свою базу данных непосредственно в Интернете, открывая свой порт для доступа к приложениям для подключения. Веб-приложение добавляет слой посередине, сохраняя доступ к базе данных внутри интрасети.

  • Вы публикуете свои данные для публики, предоставляя хотя бы одну общедоступную учетную запись, известную всем (я предполагаю, что это будет способ доступа, поскольку управление одной учетной записью для каждого пользователя не будет реалистичным). Веб-приложение изолирует учетную запись пользователя от учетных записей базы данных.

  • Предоставляя доступ таким образом, поскольку мобильные устройства Android могут быть внедрены, вы потенциально предоставляете анонимный доступ к вашим данным.

Проблемы с производительностью:

  • С помощью веб-приложения посередине, webapp управляет подключения к базе данных. Это позволяет совместное использование соединений среди разных пользователей по сравнению с одним выделенным соединением для каждого пользователя если у разных устройств есть отдельные соединения.

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

Проблемы масштабируемости:

  • Поскольку соединения не используются, количество одновременных пользователей будет привязано к числу подключений, которые вы можете открыть одновременно с базой данных.

РЕДАКТИРОВАТЬ 1

Я добавляю альтернативу, о которой я думал, которая связана с использованием веб-приложения, но она не реализована с использованием веб-сервера. Это java-инфраструктура NIO, которая работает сама по себе. Ограничения этого решения - вам нужен доступ оболочки к серверу и java, что не является обычным явлением для традиционных хостингов. Оформить заказ Netty.

Ответ 2

Есть два способа выполнения вашей задачи. Вы можете либо добавить JDBC-драйвер в студию Android, либо лучше реализовать REST API, который подключается к вашей базе данных, и все клиенты android могут отправлять HTTP-запросы на сервер, и сервер добавит вам эту информацию. Здесь вы можете реализовать методы создания, обновления и удаления. Для запросов HTTP вы можете использовать библиотеки Retrofit или Volley.

Если вы хотите использовать JDBC, ознакомьтесь с ответом здесь Как Mysql JDBC-драйвер для студии Android

Но лучшим и наиболее правильным решением для этого типа проблем была бы служба REST

Ответ 3

В конечном счете вам действительно нужно "клиентское" приложение между "пользователями" и базой данных. Обычно это делается через веб-сервер, а также PHP/Java/VB/.... Да, для этого требуется изучение другого языка, но этого не следует избегать в серьезном приложении.

Клиент может помочь (и повредить, если будет выполнено) с безопасностью. Клиент может изолировать пользователей от изменений в базе данных, что в конечном итоге произойдет. Клиент должен "абстрагировать" интерфейс с БД, чтобы пользователи не нуждались в SQL-подкованности. Etc.

Ответ 4

Вы можете установить сервер WAMP Server/XAMPP для базы данных mySQL Нажмите на значок WAMP и выберите Apache, откройте "httpd.conf" и найдите тег, начинающийся с

<Directory "c:/wamp/www"> ... </Directory>

и обновите код ниже

<Directory "c:/wamp/www"> AllowOverride All Require all granted Order Deny,Allow Deny from none Allow from all Allow from 127.0.0.1 Allow from ::1 Allow from localhost </Directory>

Теперь создайте API REST на локальном сервере, так как вы можете использовать PHP или что-то еще, и подключить приложение Android с apis с назначенным IP-адресом на ваш компьютер в локальной сети.

Ответ 5

Это не один ответ, а группа ответов. Во-первых, вам нужна концепция пересылки данных через интроспективные туннели по сети. В конце дня ваша база данных всегда прослушивает определенный порт, который является локальным для вашего компьютера, а это означает, что вы можете получить доступ и изменить содержимое базы данных. Например, если вы обращаетесь к PHPMyAdmin, вы можете обратиться к адресу MySQL на своей локальной машине.

Что вам нужно сделать, так это сделать доступ к общедоступным в Интернете, вам нужно транслировать ваше существование (адрес интернет-протокола) в Интернете. Таким образом, создание общего концентратора, короче говоря, локальные туннели позволяют легко обмениваться веб-сервисами на вашей локальной машине разработки, не вмешиваясь в настройки DNS и брандмауэра.

Путем туннелирования вашего локального компьютера в Интернет любой, у кого есть назначенный IP-адрес, может обращаться к вашему компьютеру (базе данных) по любому соединению, а не только по локальной сети или WI-FI. Существует много вариантов выбора. Существует ngrok, который предоставляет локальный сервер за NAT или брандмауэром в Интернете.

Особенности:

Не постоянно передислоцируйте свою работу, чтобы получить обратную связь от клиентов. ngrok создает безопасный общедоступный URL (https://yourapp.ngrok.io) на локальный веб-сервер на вашем компьютере. Итерация быстро с немедленной обратной связью без прерывания потока.

Протестируйте мобильные приложения против бэкэнд разработки на вашем компьютере. Укажите ngrok на своем локальном сервере-разработчике, а затем настройте приложение, чтобы использовать URL-адрес ngrok. Он не изменится, даже если вы меняете сети.

Создание интеграции веб-крючков может быть больно: для этого требуется публичный адрес и множество настроек для запуска крючков. Сэкономить время и разочарование с помощью ngrok. Проверьте трафик HTTP, проходящий через ваш туннель. Затем повторите попытку перехвата веб-крючка одним кликом, чтобы быстро итеративно оставаться в контексте.

Соблюдайте свои данные. Предоставлять личные облачные сервисы в собственной частной сети. Запустите веб-почту, синхронизацию файлов и более надежно на своем оборудовании с полным сквозным шифрованием.

Это действительно замечательно, однако есть примечание, потому что эта процедура открывает вашу локальную машину и делает ее доступной в Интернете доступной, возникает множество различных проблем безопасности, поэтому она рекомендуется только для целей тестирования без каких-либо конфиденциальных данных.

Надеюсь, что это поможет:)