Wie man MongoDB auf CentOS 7 installiert und konfiguriert
MongoDB ist eine NoSQL-Datenbank, die eine hohe Leistung, hohe Verfügbarkeit und automatische Skalierung bietet. NoSQL-Datenbank bedeutet, dass sie im Gegensatz zu MySQL oder PostgreSQL kein SQL (Structured Query Language) zum Abrufen oder Manipulieren der gespeicherten Daten unterstützt. MongoDB speichert keine Daten in Tabellen, sondern Daten in einer „Dokument“-Struktur ähnlich JSON (in MongoDB BSON genannt). MongoDB wurde erstmals 2009, vor sechs Jahren, eingeführt. Derzeit entwickelt von der Firma MongoDB MongoDB MongoDB Inc.
In diesem Tutorial führe ich Sie durch die Installation und Konfiguration von MongoDB 3.2 (stable) auf einem CentOS 7-Server. Wir werden den Administratorbenutzer für MongoDB hinzufügen und konfigurieren und die Authentifizierung für MongoDB-Dienste konfigurieren.
Voraussetzungen
- CentOS 7
- Root-Rechte
Was wir in diesem Tutorial tun werden:
- Fügen Sie das MongoDB-Repository hinzu.
- Installation von MongoDB.
- Beheben Sie einige MongoDB-Fehler.
- Erstellen Sie einen Administrator-Benutzer.
- Aktivieren Sie die MongoDB-Authentifizierung und -Tests.
Schritt 1 – Hinzufügen des MongoDB Repository in CentOS
Verbinden Sie sich mit Ihrem CentOS 7-Server über das ssh root-Konto:
ssh root@192.168.1.100
Wir müssen in das Verzeichnis’yum.repos.d‘ gehen, um das neue CentOS-Repository hinzuzufügen. Gehen Sie zu diesem Verzeichnis und erstellen Sie eine neue Repository-Datei ‚mongodb-org-3.2.repo‘ mit vim:
cd /etc/yum.repos.d/ vim mongodb-org-3.2.repo
Fügen Sie die MongoDB-Repository-Konfiguration ein, die unten gezeigt wird:
[mongodb-org-3.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
Speichern Sie die Datei und verlassen Sie den Editor.
Schritt 2 – Installation von MongoDB
Wir haben das MongoDB-Repository hinzugefügt, überprüfen Sie nun die Repository-Liste auf dem Server, um sicherzustellen, dass das MongoDB-Repository in der Liste verfügbar ist.
Führen Sie dazu den folgenden Befehl als root aus:
yum repolist
Du solltest die Ergebnisse unten sehen. Das MongoDB-Repository ist auf der Liste.
Als nächstes installieren Sie MongoDB mit dem Befehl yum.
yum -y install mongodb-org
Wenn die Installation abgeschlossen ist, starten Sie MongoDB mit diesem systemctl-Befehl:
systemctl start mongod
Überprüfen Sie, ob MongoDB läuft, indem Sie überprüfen, ob der Port’27017′ offen ist.
netstat -plntu
Und stellen Sie sicher, dass der mongodb-Dienst aktiv ist.
systemctl status mongod
Schritt 3 – Beheben eines MongoDB-Fehlers
MongoDB ist installiert. Jetzt können wir auf die mongodb-Shell zugreifen, indem wir den folgenden Befehl verwenden:
mongo
Du wirst wahrscheinlich diesen Fehler bei der ulimit-Konfiguration auf dem Server sehen.
** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000...
Ulimits oder User Limits definieren, wie viel von einer systemweiten Ressource ein Benutzer nutzen darf.
Um dieses Problem zu lösen, müssen wir die ulimit-Konfiguration des User-Mongods erhöhen.
Auf dem CentOS 7 Server läuft die MongoDB-Datenbank unter dem Benutzer „mongod“. Gehen Sie in das Verzeichnis „security“ und bearbeiten Sie die Konfigurationsdatei „limits.conf“.
cd /etc/security/ vim limits.conf
Ich werde die Grenzen des mongod-Benutzers auf 64000′ – Anzahl der Prozesse oder nproc und die Anzahl der offenen Dateien oder nofile auf 64000 erhöhen.
Fügen Sie die neue Konfiguration unten an das Ende der Datei ein:
mongod soft nproc 64000 mongod hard nproc 64000 mongod soft nofile 64000 mongod hard nofile 64000
Speichern Sie die Datei limits.conf.
Führen Sie den folgenden Befehl sysctl aus, um die geänderten Grenzwerte auf das System anzuwenden:
sysctl -p
Starten Sie dann den MongoDB-Dienst neu und versuchen Sie erneut, auf die Mongo-Shell zuzugreifen, der Fehler ist nun behoben.
systemctl restart mongod mongo
Schritt 4 – Erstellen eines MongoDB Administrator-Benutzers
In diesem Schritt erstellen wir einen neuen Benutzer „admin“ für MongoDB mit der Rolle „UserAdminAnyDatabase“ aus der Mongo-Shell.
Öffne die Mongodb-Schale:
mongo
Ich werde einen neuen Benutzeradministrator namens’admin‘ mit dem Passwort’admin123′ anlegen. Bitte verwenden Sie ein sicheres Passwort auf Ihrem Server. Dann konfigurieren wir die Rolle des Benutzers auf’UserAdminAnyDatabase‘.
Wechseln Sie in die Datenbank ‚admin‘.
use admin
Geben Sie die folgende MongoDB-Abfrage ein, um den neuen Administratorbenutzer anzulegen:
db.createUser( { user: "admin", pwd: "admin123", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
Stellen Sie anschließend sicher, dass der Benutzer mit der folgenden MongoDB-Abfrage angelegt wurde.
show users
Der MongoDB-Administratorbenutzer wurde angelegt.
Schritt 5 – Benutzerauthentifizierung in MongoDB aktivieren
In diesem Schritt aktivieren wir die Authentifizierung für Benutzer, um zu verhindern, dass ein anderer Benutzer ohne ausreichende Berechtigungen die Daten in der Datenbank sehen kann.
Auf unserem CentOS 7 Server läuft MongoDB unter systemd mit einem Initskript im Verzeichnis’/etc/init.d/‘. Wir werden dieses Skript bearbeiten, um den mongodb-Dienst zu zwingen, mit der Option ‚–auth‘ zu laufen.
Gehen Sie in das Verzeichnis’/etc/init.d/‘ und bearbeiten Sie die Datei „mongod“:
cd /etc/init.d/ vim mongod
In Zeile 15 finden Sie die Variable „OPTION“, dort werden wir die Option „mongod“ hinzufügen.
OPTIONS=" --auth -f $CONFIGFILE"
Speichern Sie die Datei.
Laden Sie den Systemdienst neu und starten Sie MongoDB neu.
systemctl daemon-reload systemctl restart mongod
Als nächstes müssen wir die Konfiguration testen, indem wir uns in die Mongoshell einloggen und in die Admin-Datenbank wechseln, dann versuchen, die Admin-Benutzer zu sehen.
mongo
use admin
show users
Sie sehen einen Fehler bei der unbefugten Ausführung des Befehls im Datenbankadministrator. Nun müssen wir den Befehl’db.auth()‘ für die Authentifizierung verwenden.
db.auth('admin', 'admin123')
Jetzt sehen Sie die Benutzer mit ihren Rollen und den Privilegien.
MongoDB 3.2 wurde auf einem CentOS 7 Server installiert und konfiguriert.