Introduction
Mettre en place un laboratoire MongoDB local est un moyen pratique de tester des requêtes, d'expérimenter des schémas de données et de créer des flux de travail d'apprentissage reproductibles sans risquer les données de production. Ce guide fournit un environnement sûr, en bac à sable, isolé de la production, avec des étapes claires et des commandes que vous pouvez exécuter immédiatement. Vous apprendrez à choisir la bonne version, à configurer MongoDB de manière sécurisée, à vérifier la configuration, à gérer les pannes courantes et à maintenir un laboratoire propre pour une utilisation continue.
Un laboratoire local est précieux pour :
- Prototyper de nouveaux modèles de données et les valider avec des ensembles de données réalistes.
- Pratiquer les pipelines d'agrégation, les stratégies d'indexation et l'optimisation des performances.
- Tester les procédures de sauvegarde et de restauration avant de s'y fier en production.
- Développer et déboguer des applications sans latence réseau ni coût.
À la fin de ce guide, vous disposerez d'une instance MongoDB entièrement fonctionnelle sur votre machine locale, sécurisée par authentification et prête pour l'expérimentation.
Inventaire de version et d'environnement
Avant de commencer, décidez quelle version de MongoDB utiliser. Consultez la matrice des versions MongoDB officielles pour sélectionner une version stable. Pour la plupart des configurations éducatives, le dernier serveur communautaire est suffisant. Au moment de la rédaction, MongoDB 7.0 est la dernière version stable, mais vérifiez toujours la version actuelle.
Considérez la topologie : un nœud unique (autonome) suffit pour les expériences de base, tandis qu'un jeu de réplicas est utile pour tester les transactions, les flux de changement et le basculement. Pour ce guide, nous utiliserons une instance autonome, plus simple et suffisante pour la plupart des scénarios d'apprentissage.
Assurez-vous que votre machine répond aux exigences minimales : au moins 2 Go de RAM, 5 Go d'espace disque libre et un système d'exploitation pris en charge (Ubuntu 20.04+, macOS 11+ ou Windows Server 2019+). Documentez le système d'exploitation, la version de MongoDB et la topologie dans un tableau d'inventaire simple.
| Élément | Recommandation | Exemple |
|---|---|---|
| OS | Ubuntu 22.04 LTS | Ubuntu 22.04.3 |
| Version de MongoDB | 7.0 (dernière stable) | 7.0.5 |
| Topologie | Autonome pour les tests de base | Autonome |
| RAM | Minimum 2 Go | 8 Go |
| Espace disque | Minimum 5 Go libres | 50 Go |
Chemin de configuration sûr
Configurez MongoDB en gardant la sécurité à l'esprit, même en local. Utilisez un répertoire de données dédié et un fichier journal. Configurez l'authentification en créant un utilisateur administrateur. Utilisez des fichiers de configuration plutôt que des options de ligne de commande pour la maintenabilité et la reproductibilité.
Tout d'abord, créez le répertoire de données et assurez-vous qu'il appartient à l'utilisateur qui exécutera mongod. Par exemple, si vous exécutez mongod en tant qu'utilisateur mongod (recommandé sur Linux), faites :
sudo mkdir -p /data/mongodb
sudo chown -R mongod:mongod /data/mongodb
Ensuite, créez un fichier de configuration minimal mongod.conf. Placez-le dans /etc/mongod.conf (ou dans un emplacement de votre choix). Voici une configuration autonome avec sécurité activée :
# mongod.conf
storage:
dbPath: /data/mongodb
journal:
enabled: true
systemLog:
destination: file
path: /data/mongodb/mongod.log
logAppend: true
net:
bindIp: 127.0.0.1
port: 27017
security:
authorization: enabled
dbPathspécifie où MongoDB stocke les fichiers de données.journalassure la durabilité.systemLogenregistre les journaux dans un fichier et les ajoute lors des redémarrages.bindIp: 127.0.0.1limite les connexions à la machine locale uniquement, ce qui est essentiel pour un laboratoire.authorization: enabledimpose l'authentification.
Démarrez MongoDB avec le fichier de configuration. Sur Linux, si vous avez installé MongoDB via les paquets officiels, vous pouvez utiliser systemctl, mais pour une installation manuelle, vous pouvez exécuter :
mongod --config /etc/mongod.conf --fork
L'option --fork démonise le processus, ce qui vous permet de continuer à utiliser le terminal. Vérifiez que MongoDB a démarré correctement en consultant le fichier journal :
tail -n 50 /data/mongodb/mongod.log
Vous devriez voir une ligne indiquant Waiting for connections.
Avec l'authentification activée, vous devez créer un utilisateur administrateur. Connectez-vous à MongoDB via mongosh (le shell MongoDB) sans authentification d'abord, puis créez l'utilisateur. Étant donné que l'authentification est activée, vous devez utiliser l'exception localhost : MongoDB vous permet de créer le premier utilisateur uniquement à partir de localhost sans identifiants. Exécutez :
mongosh --host 127.0.0.1 --port 27017 --eval "db.getSiblingDB('admin').createUser({user: 'admin', pwd: 'password123', roles: [{role: 'root', db: 'admin'}]})"
Sortie attendue :
{ ok: 1 }
Utilisez un mot de passe fort et stockez-le dans votre gestionnaire de mots de passe. Le rôle root donne tous les privilèges administratifs, ce qui est acceptable pour un environnement de laboratoire, mais en production, vous voudrez des rôles plus granulaires.
Vérification et diagnostics
Après la configuration, vérifiez que MongoDB est en cours d'exécution et écoute uniquement sur l'interface loopback. Utilisez :
ss -tlnp | grep 27017
Sortie attendue (une ligne montrant 127.0.0.1:27017) :
LISTEN 0 128 127.0.0.1:27017 0.0.0.0:*
Testez maintenant l'authentification en vous connectant avec l'utilisateur administrateur :
mongosh --host 127.0.0.1 --port 27017 -u admin -p password123 --authenticationDatabase admin --eval "db.runCommand({ping:1})"
Sortie attendue :
{ ok: 1 }
Vérifiez le journal pour toute erreur :
tail -n 50 /data/mongodb/mongod.log
Recherchez des lignes comme [initandlisten] waiting for connections et aucune ligne d'erreur.
Exécutez quelques opérations CRUD de base pour confirmer le fonctionnement. Utilisez la session mongosh avec authentification :
mongosh --host 127.0.0.1 --port 27017 -u admin -p password123 --authenticationDatabase admin --eval "db.getSiblingDB('test').users.insertOne({name: 'Alice'}); db.getSiblingDB('test').users.find()"
Sortie attendue :
{
acknowledged: true,
insertedId: ObjectId('65a1b2c3d4e5f67890abcdef')
}
[ { _id: ObjectId('65a1b2c3d4e5f67890abcdef'), name: 'Alice' } ]
Ces vérifications garantissent que MongoDB est sécurisé, accessible uniquement depuis localhost et fonctionnel.
Modes de panne et récupération
Les pannes courantes incluent les conflits de port, les erreurs de permission sur le répertoire de données et les erreurs de configuration d'authentification. Abordons chacune.
Conflit de port
Si vous voyez address already in use dans le journal, un autre processus utilise le port 27017. Trouvez le processus :
sudo lsof -i :27017
Ensuite, arrêtez ce processus ou modifiez le port dans le fichier de configuration. Par exemple, changez port: 27018 dans mongod.conf et redémarrez.
Erreurs de permission sur le répertoire de données
Si MongoDB ne démarre pas en raison de problèmes de permission, assurez-vous que le répertoire de données appartient à l'utilisateur qui exécute mongod. Par exemple, si vous exécutez mongod en tant que mongod, lancez :
sudo chown -R mongod:mongod /data/mongodb
Si vous exécutez en tant que votre propre utilisateur, utilisez chown -R $(whoami) /data/mongodb.
Erreur de configuration d'authentification
Si vous vous retrouvez verrouillé dehors ou oubliez votre mot de passe, vous pouvez désactiver temporairement l'authentification dans le fichier de configuration pour retrouver l'accès. Modifiez mongod.conf, définissez authorization: disabled (ou commentez la section security), redémarrez mongod, recréez les utilisateurs, puis réactivez l'authentification.
Corruption des données
Si MongoDB plante en raison d'une corruption des données, la commande de réparation (mongod --repair) n'est généralement pas recommandée. Au lieu de cela, restaurez à partir d'une sauvegarde récente. Cela souligne l'importance de sauvegardes régulières.
Sauvegarde et restauration
Utilisez mongodump pour créer des sauvegardes. Par exemple, pour sauvegarder la base de données test :
mongodump --db test --out /backup/$(date +%Y%m%d)
Cela crée une sauvegarde dans /backup/20250311 (ou la date correspondante). Pour restaurer :
mongorestore --db test /backup/20250311/test
Testez toujours vos procédures de sauvegarde et de restauration périodiquement pour vous assurer qu'elles fonctionnent lorsque vous en avez besoin.
Liste de contrôle opérationnelle
Maintenez votre laboratoire avec une liste de contrôle hebdomadaire :
- Vérifier l'utilisation du disque : Assurez-vous que le répertoire
dbPathne se remplit pas.
df -h /data/mongodb
- Valider les journaux : Recherchez les erreurs ou avertissements.
grep -i 'error\|warn' /data/mongodb/mongod.log | tail -20
- Effectuer une sauvegarde : Effectuez une sauvegarde complète de toutes les bases de données.
mongodump --out /backup/weekly/$(date +%Y%m%d)
- Tester la restauration : Restaurez occasionnellement dans une base de données factice pour vérifier que la sauvegarde est utilisable.
- Examiner les paramètres de sécurité : Vérifiez qu'aucun utilisateur ou port inutile n'est ouvert.
- Nettoyer les bases de données de test : Supprimez les bases de données dont vous n'avez plus besoin pour garder le laboratoire propre.
Utilisez le tableau suivant pour suivre votre inventaire et son état :
| Élément | Valeur | Vérification |
|---|---|---|
| OS | Ubuntu 22.04 | OK |
| Version de MongoDB | 7.0.5 | OK |
| Topologie | Autonome | OK |
| Authentification | Activée | OK |
| Répertoire de données | /data/mongodb | OK |
Envisagez de scripter un contrôle de santé avec une tâche cron qui envoie une commande ping au serveur quotidiennement et vous envoie un e-mail s'il est arrêté. Voici un script simple :
#!/bin/bash
if mongosh --host 127.0.0.1 --port 27017 -u admin -p 'password123' --authenticationDatabase admin --eval "db.runCommand({ping:1})" > /dev/null 2>&1; then
echo "MongoDB est en marche"
else
echo "MongoDB est arrêté" | mail -s "Contrôle de santé MongoDB" [email protected]
fi
Ajoutez ceci à crontab pour une exécution quotidienne.
Conclusion
La mise en place d'un laboratoire MongoDB local est simple si vous suivez un chemin de configuration sûr. Vous avez appris à inventorier votre environnement, configurer MongoDB avec authentification, vérifier la configuration, récupérer après des pannes et maintenir le laboratoire. Utilisez ces fondations pour expérimenter avec les requêtes, les index et la modélisation des données. Commencez petit, documentez les changements et gardez toujours des sauvegardes.
Maintenant que votre laboratoire est prêt, vous pouvez tester en toute sécurité de nouvelles idées et gagner en confiance avec MongoDB. Bonne expérimentation !