sql >> Base de Datos >  >> NoSQL >> MongoDB

Conexión a bases de datos MongoDB


Introducción

Una vez que tenga un servidor MongoDB disponible, una de las primeras y más comunes acciones que deberá realizar es conectarse a la base de datos real. Esto requiere coordinación para asegurarse de que la base de datos esté configurada de manera que permita a su cliente conectarse y autenticarse.

Esto significa que deberá comprender cómo conectarse a su base de datos MongoDB proporcionando la ubicación del servidor, los parámetros de conexión y las credenciales correctas. En esta guía, nos centraremos en cómo conectarse a la base de datos desde el lado del cliente usando mongo Cliente de shell MongoDB, diseñado principalmente para sesiones interactivas con sus bases de datos.

En una guía complementaria, puede averiguar cómo configurar los ajustes de autenticación de MongoDB para que coincidan con sus requisitos. Considere leer ambos artículos para obtener una imagen completa de cómo se implementa la autenticación desde la perspectiva de ambas partes.



Información básica sobre mongo cliente

El mongo client es un cliente JavaScript de línea de comandos para conectarse, controlar e interactuar con servidores de bases de datos MongoDB. En muchos sentidos, es la forma más sencilla de conectarse y comenzar a usar su base de datos MongoDB porque está incluida en la instalación de MongoDB y está disponible en todas las plataformas populares. El mongo El cliente es especialmente útil para realizar la configuración inicial y para sesiones interactivas en las que desee explorar sus datos o repetir consultas basadas en resultados preliminares.

La forma en que te conectas con el mongo shell depende de la configuración del servidor MongoDB y de las opciones disponibles para que usted se autentique en una cuenta. En las siguientes secciones, repasaremos algunas de las opciones básicas de conexión. En aras de la claridad, diferenciaremos entre conexiones locales y remotas:

  • conexión local :una conexión donde el cliente y la instancia de MongoDB se encuentran en el mismo servidor
  • conexión remota :donde el cliente se conecta a una instancia de MongoDB accesible por red que se ejecuta en una computadora diferente

Comencemos por conectarnos a una base de datos desde la misma computadora.



Conectando a una base de datos local con mongo

Sin ningún argumento, el mongo el comando intenta conectarse a una instancia local de MongoDB.

Para hacer esto, intenta conectarse al puerto 27017 en la dirección de loopback local:127.0.0.1:27017 . Esta es una de las interfaces a las que se vinculan los servidores MongoDB en su configuración predeterminada (también se puede acceder a MongoDB a través de un archivo de socket local).

Puede conectarse a un servidor MongoDB local que se ejecute con su configuración predeterminada escribiendo:

mongo

En una conexión exitosa, es probable que vea un conjunto bastante largo de mensajes seguidos de un indicador de shell de 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 salida muestra registros generados por mongo comando mientras se establece la conexión, seguido de algunas advertencias generadas por el servidor MongoDB en el inicio. Finalmente, hay un aviso sobre un servicio de monitoreo de MongoDB que puede aprovechar o deshabilitar.

Una de las advertencias del servidor MongoDB indica que el control de acceso no está habilitado actualmente. Esta es la razón por la que pudimos conectarnos sin proporcionar credenciales u otros detalles de autenticación.

Si se está conectando a un servidor MongoDB local que tiene configurado con control de acceso, deberá proporcionar información adicional para conectarse. Deberá proporcionar al menos un nombre de usuario y una contraseña para conectarse utilizando el --username asociado. y --password opciones:

mongo --username <mongo_username> --password

Colocando el --password opción al final y no proporcionar la contraseña en línea indica que desea que MongoDB solicite una contraseña en su lugar. Esto es más seguro que proporcionar una contraseña en el comando mismo, ya que puede ser visible o recuperable a través del historial de shell, listas de procesos y otros mecanismos.

El servidor MongoDB le pedirá la contraseña del usuario antes de conectarse a la base de datos:

MongoDB shell version v.4.4.6Enter password:

Al autenticarse con éxito, debería estar conectado a la base de datos y poder continuar su sesión normalmente.

También puede proporcionar esta información pasando una cadena de conexión en lugar de usar --username y --password opciones:

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

Ya que hemos indicado que el usuario tiene una contraseña con el <username>: sintaxis, pero no he proporcionado una, el mongo shell le pedirá la contraseña.

Alternativamente, también puede autenticarse después de conectarse con el mongo normal comando usando el db.auth comando.

Primero, conéctese a la base de datos MongoDB sin proporcionar credenciales:

mongo

Se le dará un símbolo del sistema como de costumbre, pero si el control de acceso está habilitado, no tendrá permiso para realizar muchas acciones hasta que se autentique. Por ejemplo, show dbs Es probable que el comando esté vacío ya que no tiene acceso para consultar las bases de datos disponibles:

show dbs

Para autenticarse, primero, seleccione la base de datos en la que está definido su usuario. En la mayoría de los casos, será el admin base de datos:

use admin

Luego, use db.auth() para proporcionar su nombre de usuario y solicitar una solicitud de contraseña:

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

Se le pedirá la contraseña de la cuenta de usuario como antes:

Enter password:

Si tiene éxito, el servidor generará 1 :

Enter password:1

Ahora tendrá el acceso regular del usuario que autenticó como:

show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Puede ver la lista de usuarios autenticados y roles asociados con la conexión actual en cualquier momento escribiendo:

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


Conexión a una base de datos remota

Si desea conectarse a una base de datos MongoDB remota, deberá proporcionar algunos detalles adicionales cuando use mongo concha.

Específicamente, deberá incluir el --host opción y potencialmente el --port opción también si el servidor MongoDB está escuchando en un puerto no predeterminado. En casi todos los casos, también deberá proporcionar el --user y --password opciones para autenticarse en el servidor remoto también.

La estructura básica del comando cuando se conecta a una base de datos MongoDB remota se ve así:

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

Como se mencionó en la sección sobre cómo conectarse a una base de datos local, colocar el --password opción al final y no proporcionar la contraseña en línea indica que desea el mongo shell para solicitar una contraseña en su lugar. Esto es más seguro que proporcionar una contraseña en el comando mismo, ya que puede ser visible o recuperable a través del historial de shell, listas de procesos y otros mecanismos.

El servidor MongoDB le pedirá la contraseña del usuario antes de conectarse a la base de datos:

MongoDB shell version v.4.4.6Enter password:

Al autenticarse con éxito, debería estar conectado a la base de datos y poder continuar su sesión normalmente.

También puede proporcionar esta información pasando una cadena de conexión en lugar de usar --host , --port , --username y --password opciones:

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

Ya que hemos indicado que el usuario tiene una contraseña con el <username>: sintaxis, pero no he proporcionado una, el mongo shell le pedirá la contraseña.



Ajuste de la configuración de autenticación de un servidor MongoDB

Si desea modificar las reglas que dictan cómo los usuarios pueden autenticarse en sus instancias de MongoDB, puede hacerlo modificando la configuración de su servidor. Puede averiguar cómo modificar la configuración de autenticación de MongoDB en este artículo.



Conclusión

En esta guía, cubrimos la autenticación de MongoDB desde el lado del cliente. Demostramos cómo usar mongo shell para conectarse a instancias de bases de datos locales y remotas usando una variedad de métodos.

Saber cómo conectarse a varias instancias de MongoDB es vital cuando comienza a trabajar con el sistema de base de datos. Puede ejecutar una instancia local de MongoDB para el desarrollo que no necesita ninguna autenticación especial, pero es casi seguro que sus bases de datos en preparación y producción requerirán autenticación. Ser capaz de autenticarse en cualquier caso le permitirá trabajar bien en diferentes entornos.