Как изменить место хранения БД для определенного пользователя?
Есть Java приложение, которое в перспективе должно работаь с БД.
Я только начал осваивать MySQL и не понял, как организовано хранение баз данных. Я предполагал, что БД должна храниться в папке с приложением. Однако при выполнении SQL запросов (от root) на создание базы данных, я обнаружил, что она создается в /var/lib/mysql/...
Я предполагаю, что правильно будет создать пользователя MySQL, а мое Java приложение авторизуется этим пользователем и будет взаимодействовать с БД. Как же мне настроить для этого пользователя путь сохранения БД, чтобы она создавалась в папке с приложением и далее приложение могло с ней взаимодействовать на правах, выданным пользователю.
Необязательно хранить файлы в БД в папке приложения. Работают с БД через интерфейс базы данных, а не напрямую с файлами. На уровне БД настраивается доступ для конкретного приложения или пользователя.
Для правильного вопроса надо знать половину ответа
MySQL построен по клиент-серверной технологии. С файлами базы данных работает сервер, к которому обращаются клиенты. Сервер может располагаться на том же компьютере, что и клиент, или на другом, доступном через сеть. Такая технология используется, как правило, когда все экземпляры приложения работают с одной общей базой данных.
Если вам надо держать отдельную базу данных для каждого экземпляра приложения, то смотрите в сторону SQLite.
Объясните, пожалуйста. Правильно ли будет использовать одну машину для хранения баз данных нескольких разных приложений? Тогда все базы данных будут лежать рядом в одной стандартной директории /var/lib/mysql/ ??
Dred Wolf, почему бы данным разных приложений не лежать в одной базе ?? чем они друг друг мешают ??
качественное администрирование, разграничение прав и доступа. и ок.
так-то все файлы машины лежат в одной и той же базе данных формата файловой системы.
что такого хотите разграничить в двух разных файлах бд ??
Dred Wolf, Правильно или нет - это зависит от цели. Если вы просто учитесь использовать MySQL, то поставить локально серверную часть и держать все базы в ней - это вполне нормальный вариант.
Если же вы разрабатываете коммерческое приложение, то тут надо исходить из конкретной задачи. Должен ли конечный пользователь устанавливать у себя сервер MySQL для работы с вашими приложениями? Или ему потребуется сетевое подключение к центральному серверу MySQL? Или достаточно будет интегрируемого в приложение SQLite?
Большинство СУБД хранят данные в директориях со своим расположением. В Линуксе изменчивые (variable) данные хранятся в /var. Не должно быть никаких проблем с тем что данные хранятся именно там. Все, что создается пользователем, доступно только тем, у кого есть доступ к схемам БД и таблицам.
Из тех немногих СУБД, которые позволяют хранить данные в той же директории, что и приложение, можно упомянуть SQLite. Это единственный файл, в котором находятся все данные и они доступны любому, у кого есть доступ к файлу. В SQLite нет аутентикации пользователей.
Немного отойду от своего вопроса, дабы раскрыть для себя картину в целом.
У меня базы данных нескольких разных приложений хранятся в месте заданном MySQL по умолчанию (/var/lib/mysql/). (локальный хост)
Это нормально?
Я правильно предполагаю, что работа клиент-серверного приложения работает следующим образом?
1. Существует клиент и ему необходим драйвер для взаимодействия с БД.
2. Клиент авторизуется в БД по URL, имени и паролю.
3. Клиент посылает разные SQL запросы к БД.
Таким образом логично ли будет хранить БД разных приложений в одной директории (/var/lib/mysql/) на локальном компьютере ? А что если я захочу перенести приложение на другой ПК, то мне нужно будет искать БД приложения, которые лежат в куче с БД других приложений?
У меня базы данных нескольких разных приложений хранятся в месте заданном MySQL по умолчанию (/var/lib/mysql/). (локальный хост)
Это нормально?
Mysql хранит там все БД и это нормально.
Я правильно предполагаю, что работа клиент-серверного приложения работает следующим образом?
Верно.
А что если я захочу перенести приложение на другой ПК, то мне нужно будет искать БД приложения, которые лежат в куче с БД других приложений?
Разворачиванием ПО может заниматься как программист-одиночка, так и люди со специальными должностями. Последние обычно знают где хранятся данные и могут перенести их на новое место при помощи экспорта-импорта или даже по сети.
В мелких компаниях СУБД-сервер хранится в закрытом шкафу, У средних и крупных - в стойке серверов или на облачном хостинге.