В общем, базы данных не должны быть доступны для общественности, и они не должны быть доступны непосредственно с помощью пользовательского приложения, несколько веских причин:
Как правило, нет простого способа реализовать контроль доступа на уровне строк. Представления и триггеры могут только довести вас до сих пор - в целом пользователи на уровне приложений не хорошо отображают пользователей баз данных, поскольку последние обычно имеют доступ к гораздо большему количеству данных, чем у первых.
Клиенты DB привязаны к реальной схеме базы данных. Наличие клиентов под вашим контролем, например, Android-приложение - это очень хороший способ связать себя способами, которые запретили бы любую дальнейшую разработку.
Наличие порта DB, открытого для всего мира, ни в коем случае не считается безопасным. Любая потенциальная дыра безопасности обеспечит прямой доступ ко всем вашим данным. MySQL security guidelines явно предостерегает от открытия порта DB в Интернете.
Невозможно защитить учетные данные БД или данные от достаточно определенного и хорошо осведомленного пользователя. Если ваше приложение может получить доступ к чему-то, пусть они тоже.
Протоколы доступа к базам данных в основном разработаны с учетом местных сетей, а не из-за ненадежного характера Интернета. Даже шифрование и безопасность зачастую более второстепенным ...
Стандартный подход к решению этой проблемы заключается в создании промежуточного веб-службы с отдельными учетными записями пользователей и ограниченный набор операций над данными. Веб-служба позволит каждому пользователю получать доступ только к тем данным, которые относятся к ним, и даже косвенно. Этот подход отделяет данные от уровня пользовательского приложения, позволяет гибко хранить и получать доступ к вашим данным, но вы хотите, и обеспечивает дополнительный уровень безопасности для вашей БД.
Публично доступная БД? Это звучит как катастрофа в процессе создания. Вы должны создать надлежащий веб-сервис и позволить каждому пользователю иметь свое имя пользователя и пароль, имея доступ только к своим собственным данным. – thkala
@thkla Мне нужна каждая копия приложения для доступа ко всем данным, но данные не должны быть видимыми пользователю –
Это невозможно - если ваше приложение может получить доступ к данным, тогда любой достаточно определенный и знающий пользователь сможет сделать то же самое. – thkala