Установка и настройка СУБД MongoDB
MongoDB — одна из самых распространенных нереляционных систем управления базами данных, работает под Linux. В основе Mongo лежит «Документ», в то время как в основе самой распространенной реляционный СУБД MySQL лежат столбцы и колонки.
Установка MongoDB
Устанавливаем MongoDB из стандартного репозитория
apt-get update
apt-get install mongodb
Данные mongodb по умолчанию будет хранить в каталоге /var/lib/mongodb Логи — в каталоге — /var/log/mongodb
Также, для работы MongoDB необходимо создать директорию /data/db, которая не создается при установке:
sudo mkdir -p /data/db
Далее нужно назначить пользователя mongodb владельцем каталога:
sudo chown mongodb:mongodb /data/db
Стартуем сервис
systemctl start mongodb
*По умолчанию сервис должен быть запущен, чтобы проверить его статус, введите:
systemctl status mongodb
Вывод:
● mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-07-28 07:56:11 UTC; 20min ago
Docs: man:mongod(1)
Main PID: 93976 (mongod)
Tasks: 23 (limit: 2236)
Memory: 44.9M
CGroup: /system.slice/mongodb.service
└─93976 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Jul 28 07:56:11 cluster-one systemd[1]: Started An object/document-oriented database.
Заходим в mongo
mongo
Welcome to the MongoDB shell. For interactive help, type «help». For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user >
СУБД используем BSON — своеобразную интерпретацию JSON (JavaScript Object Notation)
Рассмотрим примеры и убедимся в том, что синтаксис очень схож. JavaScript:
firstname = "Andrey";
lastName = "Ivanov";
Age = 25
BSON:
USER COLLECTION
{
_id:ObjectId("7678sd6fsdfbhw367er3"),
"firstName":"Andrey",
"lastName": "Ivanov"
"Age": 25,
"projects:["Project A", "Project B", "Project C"]"
"addresses": [
{
street: "123 Lunacharskogo st"
city: "Yekaterinburg",
state: "Sverdlovskaya oblast"
},
{
street: "4568 Sadovaya st"
city: "Moscow",
state: "Central region"
}
]
},
{
_id:ObjectId("7678s7826fsdfbhw367er3"),
"firstName":"Nikolay",
"lastName": "Petrov"
"Age": 54
};
Таким образом, заметно основное отличие реляционных БД.
Определенные элементы могут иметь признаки, которых другие элементы той же таблицы не имеют. В MySQL потребовалось бы создавать ряды и колонки для адреса и проектов, в Mongodb это не нужно.
>use admin
>db.getUsers()
Выводим всех пользователей, существующих в документах — элементах БД
Поскольку в данный момент пользователей нет, вывода также не будет.
Создадим пользователя admin и пользователей с ограниченными правами для MongoDB Linux
Заходим в консоль СУБД
mongo
Даем указание на необходимость использования базы
>use admin
switched to db admin
Создадим пользователя с правами "userAdminAnyDatabase".Чтобы создать пользователя, введите:
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Где:
username — имя пользователя,
password — пароль.

Теперь мы можем проверить список пользователей в БД admin:
>db.getUsers()

Создаем новую базу
Чтобы создать новую базу данных, введите команду:
use database
Вместо database введите название базы данных.
Создадим базу данных people:
use people
Если БД с таким названием уже существует, вы переключитесь на работу с ней.
Как узнать, с какой базой данных идёт работа:
db
Чтобы увидеть список баз данных:
show dbs
Добавляем другого пользователя
Добавляем пользователя с правами на чтение и запись
db.createUser(
{
user: "username",
pwd: "password",
roles: [ { role: "readWrite", db: "people" } ]
}
)
Где:
username — имя пользователя,
password — пароль.
Включаем авторизацию
По умолчанию вход в СУБД разрешен без пароля, для того чтобы обезопасить ваши базы данных нужно включить функцию авторизации.
Открываем конфигурационный файл:
nano /etc/mongodb.conf
Находим директиву security и задаем параметр authorization (либо добавляем директиву при её отсутствии):
security:
authorization: enabled

Перезапускаем сервис mongodb:
systemctl restart mongodb
Теперь пробуем подключиться к mongo. Мы можем авторизоваться несколькими способами.
а) Авторизация при подключении:
mongo --authenticationDatabase "admin" -u "gutovad" -p
* в данном примере мы подключимся к базе под пользователем gutovad. Пароль будет запрошен системой после ввода команды. Также, после опции -p можно указать пароль в кавычках, например, -p "P@ssw0rd", таким образом пароль не будет запрашиваться системой.
б) Авторизация после подключения:
> use admin
> db.auth("root", passwordPrompt())
Недостатки СУБД MongoDB
В сравнении с реляционными базами данных, MongoDB имеет не только преимущества, но и недостатки. Вот основные из них:
Сложность работы с транзакциями.
Меньшее соответствие требованиям к транзакционным системам (ACID — атомарность, согласованность, изолированность, прочность), чем реляционные БД.
Таким образом мы установили пакет, авторизовались в консоли, создали первые базы данных, а также пользователей, одного с безграничным доступом ко всем базам, другого с доступом на чтение и запись.
Сравнение MongoDB и MySQL в зависимости от задач:
Last updated