Post-Installation Steps
Ulimit Settings
By default, most of the systems have a limit set for the number of processes, open files, memory, etc. a particular user (application fid) can have, and these limits may cause issues in MongoDB operation.
MongoDB now provides recommended limit settings in the systemd unit file. So, we don’t need to set the limits manually.
Enable Access Control
If you take relational databases like MySQL or PostgreSQL, etc. comes with at least some level of authentication for which users need to authenticate themselves to perform database activities.
But, in the case of MongoDB, it is not the case. All users can access any database and perform any operations without authentication.
To resolve this issue, first
for daily operation.
Then, we need to enable access control by editing MongoDB’s configuration file.
Add the below lines.
Disable Huge Pages
Transparent huge pages often create performance issues for database workloads. So, MongoDB recommends the huge pages be disabled for best performance.
Create a directory place a tuned profile file to disable huge pages.
Create a file.
Place the below lines into the able file.
Enable our newly created profile.
Configuring MongoDB
After the installation is complete, we can start the MongoDB with the following command,
# systemctl start mongod
Note:- You can also start MongoDB with the following command if you have installed it using the tar package,
# mongod —dbpath /var/lib/mongo —logpath /var/log/mongodb/mongod.log —fork
Once the DB has started, we can connect to it on the local system by running the following command from the terminal,
# mongo
Now, that is the way to connect MongoDB from a local system only but we can also allow connections from remote systems. For that, we need to make some changes to the config file.
Open the MongoDB config file,
# vi /etc/mongod.conf
& look for line with “net.bindIp” & then change it to following,
net.bindIp 0.0.0.0
Or you can also mention a single IP address like,
net.bindIp 10.10.1.10
You can also mention multiple IPs or a network subnet. Also if you have started your DB with the following command,
# mongod —dbpath /var/lib/mongo —logpath /var/log/mongodb/mongod.log —fork
Then you need to also add ‘—bind_ip’ parameter followed by the remote IP address, like,
# mongod —dbpath /var/lib/mongo —logpath /var/log/mongodb/mongod.log —bind_ip 0.0.0.0 —fork
Once you have made the required changes, we can then apply the changes by restarting the services,
# systemctl stop mongod
# systemctl start mongod
Or if you used the other method to start the DB, then kill the MongoDB service & start it again. So that’s it, this completes our tutorial on how to install MongoDB on CentOS / RHEL. Do send in any questions or queries you might have using the comment box below.
If you think we have helped you or just want to support us, please consider these:-
Connect to us: |
Linux TechLab is thankful for your continued support.
Creating root and admin users
MongoDB user management is different compared to RDBMS user management like MySQL or PostgreSQL.
In MongoDB, the user is managed per database. If you want to create an administrative user you need to create a user in database.
Connect to MongoDB using mongo client
Switch to database.
Use the command below to create a user root with the root role. Don’t forget to change the password. See the steps below to generate a random password.
Generate random string for password on the command line using the command below
Besides using we can also use utility to only get the randomly generated password.
To exit from mongo client you can type.
Настройка MongoDB #
Вы можете настроить свой экземпляр MongoDB, отредактировав конфигурационный файл, записанный на YAML
.
В большинстве случаев достаточно настроек конфигурации по умолчанию. Однако для производственных сред мы рекомендуем раскомментировать раздел безопасности и включить авторизацию, как показано ниже:
/etc/mongod.conf
В опция позволяет Контроль доступа на основе ролей (RBAC)
который регулирует доступ пользователей к ресурсам и операциям базы данных. Если эта опция отключена, каждый пользователь будет иметь доступ к любой базе данных и сможет выполнять любые действия.
После внесения изменений в файл конфигурации MongoDB перезапустите службу mongod:
Чтобы найти дополнительную информацию о параметрах конфигурации, доступных в MongoDB 4.0, посетите Параметры файла конфигурации
страница документации.
Add Netdata monitoring on the cluster
Netdata open-source solution is offering access to a lot of monitoring metrics for any Linux server. The installation is really easy following the procedure described on the GitHub front page.
The mongodb plugin requires the installation of pymongo:
Then you need to configure the configuration file: /opt/netdata/etc/netdata/python.d/mongodb.conf
local: name : 'local' host : '192.168.0.8' <= to be updated with the right one port : 27017 user: 'adminUser' pass: 'adminPassword'
Now you can restart netdata
# systemctl restart netdata
And you can do this for each of the servers.
Instead of connecting on each of the server to get the netdata information you can stream the information to central netdata instance. For this on each of the mongo members you can configure the /opt/netdata/etc/netdata/stream.conf file.
enabled = yes destination = 192.168.0.KK:19999 <= netdata central server api key = XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX <= Api key you choose timeout seconds = 60 buffer size bytes = 1048576 reconnect delay seconds = 5 initial clock resync iterations = 60
On the log (netdata) concentrator you also need to setup the stream.conf file:
# Default settings for this API key enabled = yes allow from = 192.168.* default history = 20000 default memory mode = save health enabled by default = auto default postpone alarms on connect seconds = 60 multiple connections = allow
The /opt/netdata/etc/netdata/netdata.conf file need also some updates
allow streaming from = 192.168.*
Then, open the port 19999 on vlan interface only.
# firewall-cmd --permanent --zone=vlan --add-port=19999/tcp # firewall-cmd --reload
Use nginx to allow a secured external access in a /etc/nginx/conf.d/netdata.foo.com.conf file:
server { listen 80; server_name netdata.foo.com; root /opt/netdata.foo.com/htdocs; gzip on; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; error_log /opt/netdata.foo.com/logs/netdata.error.log; access_log /opt/netdata.foo.com/logs/netdata.access.log; location / { auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/htpasswd; proxy_pass http://localhost:19999/; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; } }
Use certbot to configure https…
MySQL
Самый именитый представитель нашего обзора программ для разработки базы данных. Бесплатная база данных MySQL существует с 1995 года и теперь принадлежит компании Oracle. СУБД имеет открытый исходный код. Также существует несколько платных версий, которые предлагают дополнительные функции, такие как гео-репликация кластера и автоматическое масштабирование.
Поскольку MySQL является отраслевым стандартом, она совместима практически со всеми операционными системами и написана на языках C и C ++. Это решение является отличным вариантом для международных пользователей. Сервер СУБД может выводить клиентам сообщения об ошибках на нескольких языках.
Достоинства
- Проверка на стороне сервера;
- Может использоваться как локальная база данных;
- Гибкая система привилегий и паролей;
- Безопасное шифрование всего трафика паролей;
- Библиотека, которая может быть встроена в автономные приложения;
- Предоставляет сервер в качестве отдельной программы для сетевого окружения клиент/сервер.
Недостатки практической разработки и администрирования баз данных MySQL Приобретена компанией Oracle:
- пользователи полагают, что MySQL больше не подпадает под категорию бесплатного и открытого программного обеспечения;
- больше не поддерживается сообществом;
- пользователи не могут исправлять ошибки и патчи;
- проигрывает другим решениям из-за медленных обновлений.
Загрузка данных с помощью дампа существующего осколка
Если же вариант с введением нового осколка в кластер не устраивает по какой-либо причине, то можно получить снимок данных с secondary осколка кластера утилитой mongodump, выполнив на нем:
mongodump -u USER -p USERPASS --authenticationDatabase MYDB -d MYDB --gzip --archive=/home/mongodb/backup/MYDB.tar.gz
А после восстановить на нашем «новом» осколке:
mongorestore --port 27117 -u USER -p USERPASS --authenticationDatabase MYDB -d MYDB -c Data --gzip --drop --archive=/home/mongodb/backup/MYDB.tar.gz
В данном примере я восстанавливаю только коллекцию Data (-c Data), если данный флаг опустить восстановится вся база данных, базу данных назначения (-d MYDB) также можно изменить. Помимо данных восстанавливаются также индексы
Стоит обратить внимание на параметр —drop, он удалит текущую (имя совпадает с восстанавливаемой) коллекцию в базе данных перед восстановлением, если она существует. Это нужно, т.к
mongorestore не умеет обновлять документы, а только вставляет. Т.е. документы с одинаковыми идентификаторами будут пропущены, но не обновлены. При этом «новый» осколок абсолютно не обязательно должен быть в кластере и может служить тестовой базой или в качестве резервной копии (актуальность данных в нем конечно не поддерживается). Если вы повторно собираетесь восстанавливать в него данные (например каждый день/неделю) рекомендую отключить журнал mongodb, чтобы он не раздувался при каждой загрузке дампа. Это можно сделать, изменив службу mongodb.service (добавив флаг —nojournal в переменную OPTIONS):
Environment="OPTIONS=--nojournal --quiet -f /etc/mongod.conf"
Установка MongoDB
На момент написания этой статьи последней версией MongoDB, доступной в официальных репозиториях MongoDB, была версия 4.0. Прежде чем перейти к следующему шагу, посетите (https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum) раздел документации MongoDB. и проверьте, доступен ли новый выпуск.
Выполните следующие действия, чтобы установить последнюю стабильную версию MongoDB на вашем сервере CentOS:
-
Включение хранилища MongoDB
Чтобы добавить хранилище MongoDB в вашу систему, откройте текстовый редактор и создайте новый файл конфигурации хранилища YUM с именем
в
/etc/yum.repos.d/mongodb-org.repo
Установка MongoDB
Теперь, когда репозиторий включен, вы можете установить
с помощью утилиты yum:
Во время установки yum предложит вам импортировать ключ MongoDB GPG. Введите
и нажмите
.
Следующие пакеты будут установлены в вашей системе как часть пакета
mongodb-org-server
— демон
mongod
и соответствующие сценарии инициализации и конфигурации.
mongodb-org-mongos
— демон
mongos
.
mongodb-org-shell
—
mongodb-org-shell
mongo, интерактивный JavaScript-интерфейс к MongoDB, используемый для выполнения административных задач через командную строку.
mongodb-org-tools
— содержит несколько инструментов MongoDB для импорта и экспорта данных, статистики, а также других утилит.
Начиная MongoDB
После завершения установки запустите демон MongoDB и включите его при загрузке, набрав:
Проверка установки MongoDB
Для проверки установки мы подключимся к серверу базы данных MongoDB с
инструмента
и распечатаем версию сервера:
Когда вы окажетесь внутри оболочки MongoDB, введите следующую команду, которая отобразит версию MongoDB:
Вывод будет выглядеть следующим образом:
Как устроены данные в MongoDB
В обычных реляционных базах данных информация хранится в виде взаимосвязанных таблиц. Их структура жёстко задана, и поменять её непросто. Строки каждой таблицы имеют одинаковый набор полей, данные обрабатывают с помощью запросов на языке SQL.
Эти базы наглядны, но не всегда удобны — например, в тех случаях, когда вам нужно хранить информацию без определённой структуры: представить её в виде двумерных таблиц нельзя.
В MongoDB всё устроено немного по-другому. Базы состоят из коллекций и документов — иерархических структур, содержащих пары «ключ — значение» (поля).
Если проводить аналогии с реляционной базой, коллекции при таком способе хранения соответствуют таблицам, а документы — строкам.
Информация отформатирована в BSON — двоичной кодировке JSON-подобных документов. Это позволяет поддерживать данные типа Date и двоичных файлов, что невозможно в JSON.
У документов нет строгой структуры. Они могут содержать разные наборы полей, причём различающиеся как по типу, так и по количеству. Например, документ может выглядеть так:
Значениями могут быть даже другие документы — их называют встроенными.
Подобно тому, как у строк в реляционных БД есть первичный ключ, у каждого документа в MongoDB есть уникальный идентификатор (в наших примерах это _id). Он формируется автоматически или задаётся пользователем.
Например, все эти документы принадлежат одной коллекции smartphones:
Step 4: Checking the MongoDB Version and running service
To check installed MongoDB version, run the following command:
As you see, we are using MongoDB version v3.4.2 for CentOS/RHEL 7.
Now, we’ll check that the service is up and running by running netstat command, run the following command:
As you see, our MongoDB server is up and listening on the localhost IP “127.0.0.1”and port “27017”. The listening IP and port is the default shipped configuration.
Hints: 1. The default MongoDB configuration will accept connection only from the machine MongoDB packages installed on. 2. To change the listening IP, edit the configuration file "/etc/mongod.conf", and comment/remove the line start with "", then restart you MongoDB server.
A final check we run is connecting to the MongoDB using command line and execute some test commands for checking proper working:
As you see, we used mongo command to connect to the server, by default we connected to the test database. Also we listed all the databases we have on the server by running “” command.
Install MongoDB on centos
To install MongoDB you need to simple run the command below as root or with sudo:
PowerShell
yum install mongo-10gen mongo-10gen-server
1 | yum install mongo-10genmongo-10gen-server |
Once this is completed, MongoDB is installed and ready to be used.
The configuration file is found under:
/etc/mongod.conf
Once you make any changes you need to be sure you restart the service issuing the command:
PowerShell
/etc/init/mongod restart
# or using service command
service mongod start
1 |
etcinitmongod restart # or using service command service mongod start |
Be sure that the service has been set to start automatically, you can do this by issuing command:
PowerShell
chkconfig mongod on
1 | chkconfig mongod on |
Extra Step: Uninstall MongoDB Community Edition
If you want to completely remove MongoDB from a system, you must remove the MongoDB applications themselves, the configuration files, and any directories containing data and logs.
Hints: 1. This process will completely remove MongoDB, its configuration, and all databases. 2. This process is not reversible, so ensure that all of your configuration and data is backed up before proceeding.
Run the following steps to completely uninstall MongoDB server.
Stop the MongoDB Server.
You need to stop the mongod process by issuing the following command:
Remove the installed Packages.
Remove any MongoDB packages that you had previously installed.
Remove Data and Log Directories.
Remove MongoDB databases and log files.
Finally, I hope this article is helpful for you.
If You Appreciate What We Do Here On Mimastech, You Should Consider:
- Stay Connected to: | |
-
Support us via PayPal Donation
- Subscribe to our email newsletters.
- Tell other sysadmins / friends about Us — Share and Like our posts and services
We are thankful for your never ending support.
Start MongoDB service
To start MongoDB service, run:
To check the status MongoDB service, run:
Output: ● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2020-08-10 13:10:15 EDT; 11s ago Docs: https://docs.mongodb.org/manual Process: 3147 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Process: 3145 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 3143 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SU> Process: 3141 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Main PID: 3149 (mongod) Memory: 61.1M CGroup: /system.slice/mongod.service └─3149 /usr/bin/mongod -f /etc/mongod.conf Aug 10 13:10:14 centos8.itzgeek.local systemd: Starting MongoDB Database Server... Aug 10 13:10:14 centos8.itzgeek.local mongod: about to fork child process, waiting until serve> Aug 10 13:10:14 centos8.itzgeek.local mongod: forked process: 3149 Aug 10 13:10:15 centos8.itzgeek.local mongod: child process started successfully, parent exiti> Aug 10 13:10:15 centos8.itzgeek.local systemd: Started MongoDB Database Server.
Check the MongoDB version.
Output: db version v4.4.0 Build Info: { "version": "4.4.0", "gitVersion": "563487e100c4215e2dce98d0af2a6a5a2d67c5cf", "openSSLVersion": "OpenSSL 1.1.1c FIPS 28 May 2019", "modules": [], "allocator": "tcmalloc", "environment": { "distmod": "rhel80", "distarch": "x86_64", "target_arch": "x86_64" } }
Use
netstat command to check whether the MongoDB is listening on port 27017.
Output: tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 6898/mongod
READ:
netstat command not found on CentOS 7 / RHEL 7 – Quick Fix
Установка и настройка конфига MongoDB
Но вернемся к сути статьи и начнем, пожалуй с установки, для чего нам понадобиться добавить репозиторий MongoDB (ах да, windows в данной статье рассматриваться не будет в силу не самого адекватного решения ставить её на данную ОС):
/etc/yum.repos.d/mongodb-org.repo
С содержимым:
name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
Устанавливаем MongoDB (на примере CentOS 7):
yum install mongodb-org
Редактируем конфиг базы данных
/etc/mongod.conf
Полную конфигурацию можно почитать на сайте, меня же в данном случае интересует:
Лог mongodb (им и будем пользоваться в случае возникновения проблем)
systemLog: destination: file logAppend: true path: /home/mongodb/log/mongodb/mongod.log
Место хранения БД (на него у mongodb должны быть полные права)
storage: dbPath: /home/mongodb/store journal: enabled: true
PID файл процесса
processManagement: fork: true # fork and run in background pidFilePath: /var/run/mongodb/mongod.pid
Прослушиваемый интерфейс и порт (bindIp можно закомментировать, чтобы слушать все интерфейсы)
net: port: 27017 bindIp: 0.0.0.0
Ключ авторизации кластера (возьмем его с любого осколка, у него должен быть владелец — пользователь, от которого запущен процесс mongodb и права 0600, иначе не запустится), данные строки пока закомментируем
security: authorization: enabled keyFile: /home/mongodb/mongodb-keyfile
Имя репликасета, укажем и пока закомментируем
replication: replSetName: myreplset
Собственно конфигурация на этом закончена. Далее нам необходимо создать службу, для чего создадим в папке служб пользователя /usr/lib/systemd/user/mongodb.service или системной /etc/systemd/system/mongodb.service файл службы с содержимым:
Description=High-performance, schema-free document-oriented database After=network.target TasksAccounting=false TaskMax=9999 CPUAccounting=true CPUQuota=250% MemoryAccounting=true User=mongodb Environment="OPTIONS=--quiet -f /etc/mongod.conf" ExecStart=/usr/bin/mongod $OPTIONS run PIDFile=/var/run/mongodb/mongod.pid WantedBy=multi-user.target
По пунктам:
- служба запускается после запуска сетевых служб
- отключаем контроль запущенных задач, чтобы mongodb не тормозила
- Выставляю лимиты на процессор (2,5 ядра и еще 1,5 ядра из 4 уйдет на API и ОС), естественно по хорошему API и БД размещать на разных машинах, но уж как позволяют ресурсы.
- Пользователь под которым работает процесс mongodb (соответственно у него должны быть права на папки и файлы из конфига
- В переменные передаю файл конфига (можно изменить на другой)
- Указываю PID файл из конфига MongoDB
Все бы хорошо, но у пользователя mongodb не будет прав на папку /var/run (данная папка находится в RAM сервера и монтируется пустой при загрузке). Чтобы это исправить создам файл /etc/tmpfiles.d/mongodb.conf c содержимым
d /var/run/mongodb 0755 mongodb mongodb
Далее можно перезагрузить сервер или применить tmpfiles перманентно:
systemd-tmpfiles --create mongodb.conf
Если мы не перезагружали сервер, необходимо перезагрузить systemd:
systemctl daemon-reload
Далее запустим службу mongodb
systemctl start mongodb
Если все хорошо, можно зайти в базу данных (если нет, смотрим ошибки в логе):
mongo --port 27017
Создадим администратора БД:
db.createUser({user:"ADMIN", pwd:"ADMINPASS", roles:})
И сразу выйдем из консоли:
exit
И зайдем заново уже с авторизацией:
mongo --port 28017 -u ADMIN -p ADMINPASS --authenticationDatabase admin
Теперь выберем будущую базу данных, в моем случае имя должно совпадать с тем что в остальных осколках кластера:
use mydb
И создадим для нее суперпользователя:
db.createUser( { user: "USER", pwd: "USERPASS", roles: } ) exit
Теперь можно раскомментировать строки относительно авторизации и репликасета в конфиге, после чего остановим службу:
systemctl stop mongodb
История MongoDB
MongoDB – это система управления базами данных имеющая документную модель хранения данных. Документно-ориентированная модель позволяет хранить и управлять иерархически организованными структурами данных.
История MongoDB начинается с компании lOgen приступившей к разработке программной платформы в качестве услуги. Основная идея платформы заключалась в том, что пользователи используют сервер приложений и базу данных в качестве хостинга для веб-приложений.
Изначально платформа проектировалась с учетом дальнейшего масштабирования и гибкого управления все программного и аппаратной инфраструктурой. Таким образом, MongoDB изначально разрабатывалась как совокупность программно-аппаратных средств.
В конечном итоге, компания lOgen увидела, что основному количеству разработчиков не нужен сервер приложений, а всего лишь возможность использовать новую базу данных там, где это удобно.
Таким образом, все силы компании были направлены лишь на систему управления базами данных получившую название MongoDB.
lOgen сделало MongoDB проектом с открытым исходным кодом. Хоть разработкой ядра системы и занимаются исключительно сотрудники компании, каждый желающий может сообщать о найденных ошибках и предлагать их исправление. Поддержку и обслуживание СУБД для конечных пользователей компания осуществляет за абонентскую плату.
Step 2 – Installing MongoDB
You can install the package from the third-party repository using the utility.
There are two prompts. The first one permits the installation of the MongoDB packages and the second one imports a GPG key. The publisher of MongoDB signs their software and uses a key to confirm the integrity of the downloaded packages. At each prompt, type and then press the key.
Next, start the MongoDB service with the utility:
Although we will not use them in this tutorial, you can also change the state of the MongoDB service with the and commands.
The command requests that the process reads the configuration file, , and applies any changes without requiring a restart.
The command halts all running processes.
The utility did not provide a result after executing the command, but you can check that the service started by viewing the end of the file with the command:
An output of waiting for a connection confirms that MongoDB has started successfully and you can access the database server with the MongoDB Shell:
Note: When you launched the MongoDB Shell, you may have seen a warning like this:
MongoDB is a threaded application. It can launch additional processes to handle its workload. The warning states that for MongoDB to be most effective the number of processes that it is authorized to spin up should be half that of the number of files that it can have open at any given time. To resolve the warning, alter the soft rlimit value for by editing the file:
Add the following line to the end of file:
/etc/security/limits.d/20-nproc.conf
Make sure to save the changes pressing the key, then type , and hit .
For the new limit to be available to MongoDB, restart it using the utility:
Afterward, when you connect to the MongoDB Shell, the warning should cease to exist.
To learn how to interact with MongoDB from the shell, you can review the output of the method which provides a list of methods for the object.
Leave the process running in the background, but quit the shell with the command:
Enable Access Control in MongoDB Server:
Initially, Access Control is disabled in MongoDB server. Therefore, any user that has operating system level access to CentOS 8 server can connect to MongoDB instance and perform administrative actions on the databases. That is why we were able to create an admin user without any authentication in the previous step.
To enable Access Control for MongoDB server, we need to edit the systemd unit file for mongod.service.
# vi /usr/lib/systemd/system/mongod.service
Find following line in this file.
Environment="OPTIONS=-f /etc/mongod.conf"
And replace it with following line.
Environment="OPTIONS=--auth -f /etc/mongod.conf"
We have edited a systemd unit file explicitly by using a text editor. Therefore, we need to execute the following command to inform systemd about this change.
# systemctl daemon-reload
Restart MongoDB service to apply the changes.
# systemctl restart mongod.service
For checking Access Control, connect with MongoDB shell and execute some administrative commands.
# mongo MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("3526a97b-a0a1-47d2-91b1-0c15ef9f21e9") } MongoDB server version: 4.2.5 > use admin switched to db admin > show users 2020-04-13T15:11:54.161+0500 E QUERY uncaught exception: Error: command usersInfo requires authentication : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.getUsers@src/mongo/shell/db.js:1638:15 shellHelper.show@src/mongo/shell/utils.js:883:9 shellHelper@src/mongo/shell/utils.js:790:15 @(shellhelp2):1:1
This time the «show user» command raises the authentication error, it confirms that the Access Control has been enabled in our MongoDB server.
Now, connect as admin user.
> db.auth("admin",passwordPrompt()) Enter password: 1
Now, execute the same command, to check if it is working or not.
> show users { "_id" : "admin.admin", "userId" : UUID("cefd30bd-2e83-4959-a47a-087a423806a0"), "user" : "admin", "db" : "admin", "roles" : , "mechanisms" : }
The command “show users” has been successfully executed with a privileged user.
Access Control for MongoDB database has been enabled.
4: Импорт тестовых данных (опционально)
В отличие от других серверов баз данных, MongoDB не предоставляет базы данных test. Чтобы не экспериментировать с данными, которые находятся в производстве, загрузите образец данных из документации MongoDB. Полученный документ JSON содержит список ресторанов, на котором вы можете поупражняться в работе с MongoDB.
Перейдите в каталог с возможностью записи:
С помощью команды curl загрузите файл JSON из документации MongoDB:
Команда mongoimport вставит данные в БД test. Флаг –db определяет БД, которую нужно использовать, –collection указывает, где именно в БД нужно хранить данные, –file указывает файл, в который нужно добавить данные.
Вывод подтвердит перемещение данных из файла primer-dataset.json.
Теперь попробуйте создать запрос. Запустите оболочку:
Оболочка выберет базу test по умолчанию.
Запросите коллекцию restaurants с помощью метода find(), чтобы просмотреть список ресторанов. Данная коллекция содержит более 2500 записей; чтобы ограничить вывод, используйте метод limit(). Метод pretty() выведет данные в более удобном для чтения формате.
Попробуйте использовать другие методы MongoDB. Чтобы удалить тестовые данные, используйте метод db.restaurants.drop().
Чтобы закрыть оболочку, введите:
MongoDB
MongoDB была основана в 2007 году и известна как «база данных для великих идей». Проект финансируется такими известными инвесторами, как Fidelity Investments, Goldman Sachs Group, Inc., и Intel Capital. С момента своего создания MongoDB была скачена 20 миллионов раз и поддерживается более чем 1000 партнерами. Эти партнеры придерживаются принципа бесплатного решения с открытым исходным кодом.
Достоинства
- Проверка документов;
- Зашифрованный механизм хранения.
Популярные варианты использования:
- мобильные приложения;
- каталоги продуктов;
- управление контентом;
- Real-time приложения с механизмом хранения в памяти (бета-версия);
- сокращает время между первичным сбоем и восстановлением.
Недостатки
- Не подходит для приложений, требующих сложных транзакций;
- Не подходит для устаревших приложений;
- Молодое решение: программное обеспечение меняется и быстро развивается.
Create SELinux Policy for MongoDB on CentOS 8:
Check current SELinux mode.
# getenforce Enforcing
We need checkpolicy command to verfiy the custom SELinux policies, therefore we are installing checkpolicy package by using dnf command.
# dnf install -y checkpolicy
Create a custom SELinux policy file.
# vi mongodb_cgroup_memory.te
And add followingdirectives therein.
module mongodb_cgroup_memory 1.0; require { type cgroup_t; type mongod_t; class dir search; class file { getattr open read }; } #============= mongod_t ============== allow mongod_t cgroup_t:dir search; allow mongod_t cgroup_t:file { getattr open read };
Compiled and apply this SELinux policy.
# checkmodule -M -m -o mongodb_cgroup_memory.mod mongodb_cgroup_memory.te # semodule_package -o mongodb_cgroup_memory.pp -m mongodb_cgroup_memory.mod # semodule -i mongodb_cgroup_memory.pp
Что такое MongoDB, зачем её создали и где её скачать
MongoDB — это документоориентированная нереляционная СУБД, которая распространяется по лицензии SSPL и имеет открытый исходный код.
Её создатели были довольно авторитетными в мире IT разработчиками. В частности, именно они основали в начале 2000-х DoubleClick — одну из первых компаний, специализирующихся на интернет-рекламе, с фантастической по тем временам скоростью показа до 400 000 объявлений в секунду.
В 2005 году Мерриман с коллегами выгодно продали её Google и смогли вплотную приступить к давно волновавшей их проблеме. Существовавшие в середине нулевых базы данных не имели чёткой структуры, хранившиеся в них информационные фрагменты не были связаны друг с другом, постоянно возникали проблемы с масштабируемостью и гибкостью. Так возникла фирма 10gen, позже переименованная в честь своего флагманского продукта в MongoDB Inc.
Checking MongoDB Service on CentOS 7
Beside using or command, we can use multiple tools to check status of MongoDB service.
To check where MongoDB service listening to we can use
In the command above, we grep MongoDB default port .
As alternative we can also grep application name
We can also use to do similar check like netstat
We can use and grep mongod process. Since we need to check all process name we need to use sudo this time
If we want to know MongoDB process details we can use command
We use option -m1 to so we only show the first line of grep since grep will also our grep process that contains mongod word.
command can be used to see more detailed and real time resource usage of MongoDB process. Use command below to use top but filter only for process run by user.
To see thread details you can press .