How to install mongodb 4.0.5 on centos and red hat7

How to install mongodb 4.0.5 on centos and red hat7

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:

  1. Включение хранилища 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
2
3

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:

  1. Stay Connected to: | |
  2. Support us via PayPal Donation

  3. Subscribe to our email newsletters.
  4. 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

По пунктам:

  1. служба запускается после запуска сетевых служб
  2. отключаем контроль запущенных задач, чтобы mongodb не тормозила
  3. Выставляю лимиты на процессор (2,5 ядра и еще 1,5 ядра из 4 уйдет на API и ОС), естественно по хорошему API и БД размещать на разных машинах, но уж как позволяют ресурсы.
  4. Пользователь под которым работает процесс mongodb (соответственно у него должны быть права на папки и файлы из конфига
  5. В переменные передаю файл конфига (можно изменить на другой)
  6. Указываю 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 .

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: