MongoDB est un système de base de données NoSQL multiplateforme écrit en C++. MongoDB est différent des bases de données SQL traditionnelles basées sur des tables comme MySQL et PostgreSQL et est spécialement conçu pour le stockage de données à volume élevé. MongoDB utilise des documents de type JSON avec des schémas dynamiques et ne nécessite pas de schéma prédéfini avant d'ajouter des données à une base de données. MongoDB est gratuit, open-source et est livré avec un riche ensemble de fonctionnalités, notamment le stockage, la réplication de données, les requêtes ad hoc, l'équilibrage de charge et bien d'autres.
Dans ce tutoriel, nous allons vous expliquer comment installer et sécuriser MongoDB sur CentOS 8.
Prérequis
- Un nouveau VPS CentOS 8 sur la plate-forme cloud d'Atlantic.net.
- Un mot de passe root configuré sur votre serveur.
Étape 1 - Créer un serveur cloud Atlantic.Net
Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 1 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.
Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.
dnf update -y
Étape 2 - Ajouter le référentiel MongoDB
Vous pouvez le créer avec la commande suivante :
nano /etc/yum.repos.d/mongodb-org.repo
Ajoutez les lignes suivantes :
[mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous pouvez procéder à l'installation de MongoDB sur votre système.
Étape 3 - Installer MongoDB
Maintenant, vous pouvez installer MongoDB en exécutant simplement la commande suivante :
dnf install mongodb-org -y
Une fois l'installation terminée, démarrez le service MongoDB et autorisez-le à démarrer après le redémarrage du système avec la commande suivante :
systemctl start mongod systemctl enable mongod
Vous pouvez maintenant vérifier l'état du service MongoDB à l'aide de la commande suivante :
systemctl status mongod
Vous devriez voir le résultat suivant :
● mongod.service - MongoDB Database Server Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2020-04-10 10:58:18 EDT; 7s ago Docs: https://docs.mongodb.org/manual Process: 2904 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS) Process: 2902 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2899 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCESS) Process: 2897 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS) Main PID: 2906 (mongod) Memory: 77.0M CGroup: /system.slice/mongod.service └─2906 /usr/bin/mongod -f /etc/mongod.conf Apr 10 10:58:17 centos8 systemd[1]: Starting MongoDB Database Server... Apr 10 10:58:17 centos8 mongod[2904]: about to fork child process, waiting until server is ready for connections. Apr 10 10:58:17 centos8 mongod[2904]: forked process: 2906 Apr 10 10:58:18 centos8 mongod[2904]: child process started successfully, parent exiting Apr 10 10:58:18 centos8 systemd[1]: Started MongoDB Database Server.
Maintenant, MongoDB s'exécute et écoute sur le port 27017. Vous pouvez le vérifier avec la commande suivante :
netstat -pnltu | grep 27017
Vous devriez obtenir le résultat suivant :
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2906/mongod
Vous pouvez également accéder au shell MongoDB avec la commande suivante :
mongo
Vous devriez obtenir le résultat suivant :
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("b0f7656f-f939-4f50-87d2-01cbeca0849a") } MongoDB server version: 4.2.5 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 Server has startup warnings: 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'. 2020-04-10T10:58:18.521-0400 I CONTROL [initandlisten] ** We suggest setting it to 'never' 2020-04-10T10:58:18.522-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() ---
Vous pouvez quitter le shell MongoDB avec la commande suivante :
>exit
Étape 4 - Activer l'authentification MongoDB
nano /etc/mongod.conf
Ajoutez la ligne suivante à la fin du fichier :
security: authorization: enabled
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service MongoDB pour appliquer les modifications :
systemctl restart mongod
Étape 5 - Créer un utilisateur administrateur MongoDB
Ensuite, vous devrez créer un utilisateur administratif avec tous les privilèges pour effectuer des tâches administratives.
Tout d'abord, accédez au shell MongoDB avec la commande suivante :
mongo
Vous devriez obtenir le résultat suivant :
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("09e0e028-cd26-4f9d-9270-52b938925f99") } MongoDB server version: 4.2.5
Ensuite, changez la base de données en admin avec la commande suivante :
> use admin
Ensuite, créez un utilisateur administrateur MongoDB appelé myadmin avec la commande suivante :
> db.createUser( { user: "myadmin", pwd: "password", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
Une fois l'utilisateur créé, vous devriez obtenir le résultat suivant :
Successfully added user: { "user" : "myadmin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
Ensuite, quittez le shell MongoDB avec la commande suivante :
>exit
Étape 6 - Vérifier l'authentification MongoDB
À ce stade, MongoDB est configuré avec l'authentification. Vous devrez maintenant fournir un nom d'utilisateur et un mot de passe avant d'interagir avec MongoDB.
Ensuite, connectez MongoDB sans authentification :
mongo
Vous devriez obtenir le résultat suivant :
MongoDB shell version v4.2.5 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("fecf1846-13fd-4959-91da-5cf323781e13") } MongoDB server version: 4.2.5
Maintenant, exécutez la commande suivante pour répertorier les utilisateurs de MongoDB :
> show users
Vous devriez obtenir l'erreur suivante :
2020-04-10T11:08:04.598-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
Cela démontre que vous ne pouvez pas répertorier les utilisateurs sans vous authentifier.
Maintenant, quittez MongoDB avec la commande suivante :
>exit
Étape 7 - Accéder à MongoDB avec l'utilisateur administratif
Maintenant, connectons-nous à MongoDB avec l'utilisateur administratif :
mongo -u myadmin -p --authenticationDatabase admin
Il vous sera demandé de fournir votre mot de passe administrateur comme indiqué ci-dessous :
MongoDB shell version v4.2.5 Enter password:
Fournissez votre mot de passe administrateur et appuyez sur Entrée . Vous devriez obtenir le résultat suivant :
connecting to: mongodb://127.0.0.1:27017/?authSource=admin&compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("a39f723c-f1b5-4c93-9e67-ff82379dfb62") } MongoDB server version: 4.2.5
Ensuite, changez la base de données en admin et listez les utilisateurs avec la commande suivante :
> use admin > show users
Vous devriez obtenir le résultat suivant :
{ "_id" : "admin.myadmin", "userId" : UUID("bcd920c1-63fd-4b82-a8a6-eb6515d51a34"), "user" : "myadmin", "db" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }
Maintenant, quittez le shell MongoDB avec la sortie suivante :
> exit
Conclusion
Dans le guide ci-dessus, nous avons appris à installer MongoDB sur CentOS 8. Nous avons également montré comment activer l'authentification MongoDB et créer un utilisateur administratif. Votre MongoDB sur votre VPS Atlantic.Net est maintenant sécurisé avec un nom d'utilisateur et un mot de passe - si vous n'avez pas de VPS d'Atlantic.Net, commencez dès aujourd'hui avec l'hébergement VPS pour installer MongoDB !