Wie man MongoDB auf CentOS 8 installiert

MongoDB ist eine freie, quelloffene und dokumentenorientierte Datenbank-Engine, die Zugriff auf nicht-relationale Datenbanken bietet. MongoDB speichert die Daten in JSON wie Dokumente zusammen mit einem dynamischen Schema, so dass es im Vergleich zu anderen Datenbanken eine bessere Leistung bietet. MongoDB ist eine NoSQL-Datenbank, d.h. sie unterstützt kein SQL zur Manipulation der gespeicherten Daten. MongoDB bietet eine Vielzahl von Funktionen, einschließlich Ad-hoc-Abfragen, Indizierung, Replikation, Lastausgleich, Dateispeicherung, Aggregation, Transaktionen und vieles mehr. MongoDB ist eine der populärsten Datenbank-Engines für alle Systeme und wurde in einer Reihe von groß angelegten Produktionseinsätzen verwendet.

In diesem Tutorial zeigen wir Ihnen, wie Sie MongoDB auf dem CentOS 8 Server installieren und benutzen.

Voraussetzungen

  • Ein Server mit CentOS 8.
  • Ein Root-Passwort wird auf Ihrem Server konfiguriert.

MongoDB installieren

Standardmäßig ist MongoDB nicht im Standard-Repository von CentOS 8 verfügbar. Sie müssen also das MongoDB-Repository zu Ihrem System hinzufügen. Sie können es hinzufügen, indem Sie die Datei mongodb.repo innerhalb des Verzeichnisses /etc/yum.repos.d/ erstellen:

nano /etc/yum.repos.d/mongodb.repo

Fügen Sie die folgenden Zeilen hinzu:

[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/development/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

Speichern und schließen Sie die Datei. Dann installieren Sie MongoDB mit dem folgenden Befehl:

dnf install mongodb-org

Starten Sie nach der Installation von MongoDB den MongoDB-Dienst und aktivieren Sie ihn nach dem Neustart des Systems:

systemctl start mongod
 systemctl enable mongod

Sie können nun den Status von MongoDB mit dem folgenden Befehl überprüfen:

systemctl status mongod

Sie sollten die folgende Ausgabe erhalten:

systemctl status mongod

Geben Sie aus.

? mongod.service - MongoDB Database Server
   Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-28 03:59:12 EDT; 5min ago
     Docs: https://docs.mongodb.org/manual
  Process: 737 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
  Process: 735 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 732 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS)
  Process: 726 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
 Main PID: 914 (mongod)
   Memory: 216.1M
   CGroup: /system.slice/mongod.service
           ??914 /usr/bin/mongod --auth -f /etc/mongod.conf

Oct 28 03:58:14 centos8 systemd[1]: Starting MongoDB Database Server...
Oct 28 03:58:28 centos8 mongod[737]: about to fork child process, waiting until server is ready for connections.
Oct 28 03:58:28 centos8 mongod[737]: forked process: 914
Oct 28 03:59:12 centos8 mongod[737]: child process started successfully, parent exiting
Oct 28 03:59:12 centos8 systemd[1]: Started MongoDB Database Server.

Als nächstes können Sie mit folgendem Befehl auf die MongoDB-Shell zugreifen:

mongo

Sie sollten die folgende Ausgabe erhalten:

MongoDB shell version v4.2.1-rc0-5-g87a606d
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e8e052c8-7c47-4908-9a29-d7825bac037a") }
MongoDB server version: 4.2.1-rc0-5-g87a606d
Server has startup warnings: 
2019-10-28T04:07:55.106-0400 I  CONTROL  [initandlisten] 
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] 
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] 
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2019-10-28T04:07:55.107-0400 I  CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

Erstellen Sie einen MongoDB Admin-Benutzer

Als nächstes erstellen Sie einen Admin-Benutzer für MongoDB mit administrativen Rechten. Öffnen Sie zunächst die MongoDB-Shell mit dem folgenden Befehl:

mongo

Schalten Sie als nächstes die Datenbank wie unten gezeigt auf admin:

>use admin

Als nächstes erstellen Sie einen neuen MongoDB-Benutzer mit dem folgenden Befehl:

> db.createUser(
 {
 user: "mongodadmin",
 pwd: "password123",
 roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
 }
 )

Sie sollten die folgende Ausgabe erhalten:

Successfully added user: {
	"user" : "mongodadmin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	]
}

Listen Sie als nächstes Ihren Admin-Benutzer mit folgendem Befehl auf:

>show users

Sie sollten die folgende Ausgabe sehen:

{
	"_id" : "admin.mongodadmin",
	"userId" : UUID("f6e908db-e393-44a9-8c77-0fdb1c2baa0e"),
	"user" : "mongodadmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}

MongoDB-Authentifizierung konfigurieren

Standardmäßig erlaubt MongoDB allen Benutzern, auf die MongoDB-Shell zuzugreifen und beliebige Befehle auszuführen. Es wird daher empfohlen, die MongoDB-Authentifizierung so zu konfigurieren, dass andere Benutzer keinen Befehl ohne ausreichende Privilegien ausführen können.

Zuerst müssen Sie die MongoDB-Authentifizierung aktivieren, indem Sie die Datei /lib/systemd/system/mongod.service bearbeiten.

nano /lib/systemd/system/mongod.service

Ändern Sie die folgende Zeile:

Environment="OPTIONS= --auth -f /etc/mongod.conf"

Speichern und schließen Sie die Datei. Laden Sie dann den systemdämon neu und starten Sie den MongoDB-Dienst mit dem folgenden Befehl neu:

systemctl --system daemon-reload
 systemctl restart mongod

Loggen Sie sich nun in die MongoDB-Shell ein und versuchen Sie, die Benutzer ohne Authentifizierung zu sehen:

mongo
 > use admin
 > show users

Sie sollten folgenden Fehler sehen:

2019-10-28T04:13:15.346-0400 E  QUERY    [js] uncaught exception: Error: command usersInfo requires authentication :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/db.js:1638:15
[email protected]/mongo/shell/utils.js:883:9
[email protected]/mongo/shell/utils.js:790:15
@(shellhelp2):1:1

Führen Sie jetzt den folgenden Befehl aus, um die MongoDB zu authentifizieren:

> db.auth('mongodadmin', 'password123')
 > show users

In der folgenden Ausgabe sollten Sie den Admin-Benutzer mit seinen Rollen sehen:

{
	"_id" : "admin.mongodadmin",
	"userId" : UUID("f6e908db-e393-44a9-8c77-0fdb1c2baa0e"),
	"user" : "mongodadmin",
	"db" : "admin",
	"roles" : [
		{
			"role" : "userAdminAnyDatabase",
			"db" : "admin"
		}
	],
	"mechanisms" : [
		"SCRAM-SHA-1",
		"SCRAM-SHA-256"
	]
}

Schlussfolgerung

Im obigen Tutorial haben wir gelernt, wie man MongoDB installiert und die MongoDB-Benutzerauthentifizierung konfiguriert. Ich hoffe, Sie haben nun genug Wissen, um Ihre eigene Datenbank zu erstellen und mit der Erstellung einer Anwendung mit MongoDB zu beginnen. Wenn Sie Fragen haben, können Sie mich gerne fragen.

Das könnte dich auch interessieren …