MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Connexion aux bases de données MongoDB


Introduction

Une fois que vous avez un serveur MongoDB disponible, l'une des premières et des plus courantes actions que vous devrez entreprendre est de vous connecter à la base de données réelle. Cela nécessite une coordination pour s'assurer que la base de données est configurée de manière à permettre à votre client de se connecter et de s'authentifier.

Cela signifie que vous devrez comprendre comment vous connecter à votre base de données MongoDB en fournissant l'emplacement du serveur, les paramètres de connexion et les informations d'identification correctes. Dans ce guide, nous allons nous concentrer sur la façon de se connecter à la base de données du côté client en utilisant le mongo Client shell MongoDB, conçu principalement pour des sessions interactives avec vos bases de données.

Dans un guide d'accompagnement, vous pouvez découvrir comment configurer les paramètres d'authentification de MongoDB en fonction de vos besoins. Envisagez de lire les deux articles pour avoir une image complète de la façon dont l'authentification est mise en œuvre du point de vue des deux parties.



Informations de base sur le mongo clients

Le mongo client est un client JavaScript en ligne de commande pour se connecter, contrôler et interagir avec les serveurs de base de données MongoDB. À bien des égards, c'est le moyen le plus simple de se connecter et de commencer à utiliser votre base de données MongoDB, car il est inclus dans l'installation de MongoDB et disponible sur toutes les plates-formes populaires. Le mongo client est particulièrement utile pour effectuer la configuration initiale et pour les sessions interactives où vous souhaitez explorer vos données ou itérer sur des requêtes basées sur des résultats préliminaires.

La façon dont vous vous connectez avec le mongo shell dépend de la configuration du serveur MongoDB et des options disponibles pour vous authentifier sur un compte. Dans les sections suivantes, nous passerons en revue certaines des options de connexion de base. Par souci de clarté, nous ferons la différence entre les connexions locales et distantes :

  • connexion locale :une connexion où le client et l'instance MongoDB sont situés sur le même serveur
  • connexion à distance  :où le client se connecte à une instance MongoDB accessible par le réseau et exécutée sur un autre ordinateur

Commençons par se connecter à une base de données depuis le même ordinateur.



Connexion à une base de données locale avec mongo

Sans aucun argument, le mongo La commande tente de se connecter à une instance MongoDB locale.

Pour cela, il tente de se connecter au port 27017 sur l'adresse de bouclage local :127.0.0.1:27017 . Il s'agit de l'une des interfaces auxquelles les serveurs MongoDB se lient dans leur configuration par défaut (MongoDB peut également être accessible via un fichier socket local).

Vous pouvez vous connecter à un serveur MongoDB local fonctionnant avec sa configuration par défaut en tapant :

mongo

Lors d'une connexion réussie, vous verrez probablement un ensemble assez long de messages suivis d'une invite du shell MongoDB :

 MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting:         2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem         2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- ---         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() --- >

La sortie affiche les journaux générés par le mongo lors de l'établissement de la connexion, suivi de quelques avertissements générés par le serveur MongoDB au démarrage. Enfin, il existe un avis concernant un service de surveillance MongoDB dont vous pouvez choisir de profiter ou de désactiver.

L'un des avertissements du serveur MongoDB indique que le contrôle d'accès n'est pas activé actuellement. C'est la raison pour laquelle nous avons pu nous connecter sans fournir d'informations d'identification ou d'autres détails d'authentification.

Si vous vous connectez à un serveur MongoDB local qui a été configuré avec le contrôle d'accès, vous devrez fournir des informations supplémentaires pour vous connecter. Vous devrez fournir au moins un nom d'utilisateur et un mot de passe pour vous connecter en utilisant le --username associé et --password option :

mongo --username <mongo_username> --password

Placer le --password à la fin et ne pas fournir le mot de passe en ligne indique que vous souhaitez que MongoDB demande un mot de passe à la place. C'est plus sûr que de fournir un mot de passe dans la commande elle-même car cela peut être visible ou récupérable via l'historique du shell, les listes de processus et d'autres mécanismes.

Le serveur MongoDB vous demandera le mot de passe de l'utilisateur avant de vous connecter à la base de données :

MongoDB shell version v.4.4.6Enter password:

Une fois l'authentification réussie, vous devriez être connecté à la base de données et pouvoir poursuivre votre session normalement.

Vous pouvez également fournir ces informations en transmettant une chaîne de connexion au lieu d'utiliser le --username et --password option :

mongo "mongodb://<mongo_username>:@127.0.0.1"

Puisque nous avons indiqué que l'utilisateur a un mot de passe avec le <username>: syntaxe, mais n'en a pas fourni, le mongo shell demandera le mot de passe.

Alternativement, vous pouvez également vous authentifier après vous être connecté avec le mongo normal commande en utilisant la db.auth commande.

Tout d'abord, connectez-vous à la base de données MongoDB sans fournir d'identifiants :

mongo

Vous recevrez une invite de commande comme d'habitude, mais si le contrôle d'accès est activé, vous n'aurez pas la permission d'effectuer de nombreuses actions jusqu'à ce que vous vous authentifiez. Par exemple, le show dbs La commande sera probablement vide puisque vous n'avez pas accès pour interroger les bases de données disponibles :

show dbs

Pour vous authentifier, sélectionnez d'abord la base de données dans laquelle votre utilisateur est défini. Le plus souvent, ce sera l'admin base de données :

use admin

Ensuite, utilisez db.auth() pour fournir votre nom d'utilisateur et demander une invite de mot de passe :

db.auth({user: "<mongo_username>", passwordPrompt()})

Vous serez invité à saisir le mot de passe du compte utilisateur comme auparavant :

Enter password:

Si vous réussissez, le serveur affichera 1 :

Enter password:1

Vous aurez maintenant l'accès régulier de l'utilisateur sous lequel vous vous êtes authentifié :

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Vous pouvez afficher à tout moment la liste des utilisateurs authentifiés et des rôles associés à la connexion en cours en tapant :

db.runCommand("connectionStatus")
{        "authInfo" : {                "authenticatedUsers" : [                        {                                "user" : "root",                                "db" : "admin"                        }                ],                "authenticatedUserRoles" : [                        {                                "role" : "userAdminAnyDatabase",                                "db" : "admin"                        },                        {                                "role" : "readWriteAnyDatabase",                                "db" : "admin"                        }                ]        },        "ok" : 1}


Connexion à une base de données distante

Si vous souhaitez vous connecter à une base de données MongoDB distante, vous devrez fournir quelques détails supplémentaires lors de l'utilisation de mongo coque.

Plus précisément, vous devrez inclure le --host et éventuellement l'option --port également si le serveur MongoDB écoute sur un port autre que celui par défaut. Dans presque tous les cas, vous devrez également fournir le --user et --password options pour s'authentifier également auprès du serveur distant.

La structure de base de la commande lors de la connexion à une base de données MongoDB distante ressemble donc à ceci :

mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password

Comme mentionné dans la section sur la connexion à une base de données locale, en plaçant le --password l'option à la fin et ne pas fournir le mot de passe en ligne indique que vous voulez le mongo shell pour demander un mot de passe à la place. C'est plus sûr que de fournir un mot de passe dans la commande elle-même car cela peut être visible ou récupérable via l'historique du shell, les listes de processus et d'autres mécanismes.

Le serveur MongoDB vous demandera le mot de passe de l'utilisateur avant de vous connecter à la base de données :

MongoDB shell version v.4.4.6Enter password:

Une fois l'authentification réussie, vous devriez être connecté à la base de données et pouvoir poursuivre votre session normalement.

Vous pouvez également fournir ces informations en transmettant une chaîne de connexion au lieu d'utiliser le --host , --port , --username et --password option :

mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"

Puisque nous avons indiqué que l'utilisateur a un mot de passe avec le <username>: syntaxe, mais n'en a pas fourni, le mongo shell demandera le mot de passe.



Ajuster la configuration d'authentification d'un serveur MongoDB

Si vous souhaitez modifier les règles qui dictent la manière dont les utilisateurs peuvent s'authentifier auprès de vos instances MongoDB, vous pouvez le faire en modifiant la configuration de votre serveur. Vous pouvez découvrir comment modifier la configuration de l'authentification de MongoDB dans cet article.



Conclusion

Dans ce guide, nous avons couvert l'authentification MongoDB du côté client. Nous avons montré comment utiliser le mongo shell pour se connecter aux instances de base de données locales et distantes à l'aide de diverses méthodes.

Savoir comment se connecter à différentes instances de MongoDB est essentiel lorsque vous commencez à utiliser le système de base de données. Vous pouvez exécuter une instance MongoDB locale pour le développement qui ne nécessite aucune authentification spéciale, mais vos bases de données en staging et en production nécessiteront presque certainement une authentification. Pouvoir vous authentifier dans les deux cas vous permettra de bien travailler dans différents environnements.