MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Conectando-se a bancos de dados MongoDB


Introdução


Assim que você tiver um servidor MongoDB disponível, uma das primeiras e mais comuns ações que você precisará realizar é conectar-se ao banco de dados real. Isso requer coordenação para garantir que o banco de dados esteja configurado de forma a permitir que seu cliente se conecte e autentique.

Isso significa que você precisará entender como se conectar ao banco de dados MongoDB fornecendo a localização do servidor, os parâmetros de conexão e as credenciais corretas. Neste guia, vamos nos concentrar em como se conectar ao banco de dados do lado do cliente usando o mongo Cliente shell MongoDB, projetado principalmente para sessões interativas com seus bancos de dados.

Em um guia complementar, você pode descobrir como definir as configurações de autenticação do MongoDB para atender aos seus requisitos. Considere ler as duas partes para obter uma visão completa de como a autenticação é implementada da perspectiva de ambas as partes.


Informações básicas sobre o mongo cliente


O mongo client é um cliente JavaScript de linha de comando para conectar, controlar e interagir com servidores de banco de dados MongoDB. De muitas maneiras, é a maneira mais simples de se conectar e começar a usar seu banco de dados MongoDB porque está incluído na instalação do MongoDB e disponível em todas as plataformas populares. O mongo client é especialmente útil para realizar a configuração inicial e para sessões interativas nas quais você deseja explorar seus dados ou iterar em consultas com base em resultados preliminares.

A maneira como você se conecta com o mongo shell depende da configuração do servidor MongoDB e das opções disponíveis para você autenticar em uma conta. Nas seções a seguir, veremos algumas das opções básicas de conexão. Para maior clareza, vamos diferenciar entre conexões locais e remotas:
  • conexão local :uma conexão onde o cliente e a instância do MongoDB estão localizados no mesmo servidor
  • conexão remota :onde o cliente está se conectando a uma instância MongoDB acessível pela rede em execução em um computador diferente

Vamos começar conectando-se a um banco de dados do mesmo computador.


Conectando-se a um banco de dados local com mongo


Sem argumentos, o mongo O comando tenta se conectar a uma instância local do MongoDB.

Para fazer isso, ele tenta se conectar à porta 27017 no endereço de loopback local:127.0.0.1:27017 . Esta é uma das interfaces às quais os servidores MongoDB se vinculam em sua configuração padrão (o MongoDB também pode ser acessível por meio de um arquivo de soquete local).

Você pode se conectar a um servidor MongoDB local em execução com sua configuração padrão digitando:
mongo

Em uma conexão bem-sucedida, você provavelmente verá um conjunto bastante longo de mensagens seguido por um prompt de shell do 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() --- >

A saída mostra os logs gerados pelo mongo comando ao estabelecer a conexão, seguido por alguns avisos gerados pelo servidor MongoDB na inicialização. Por fim, há um aviso sobre um serviço de monitoramento do MongoDB que você pode optar por aproveitar ou desabilitar.

Um dos avisos do servidor MongoDB indica que o controle de acesso não está ativado no momento. Esta é a razão pela qual conseguimos nos conectar sem fornecer credenciais ou outros detalhes de autenticação.

Se você estiver se conectando a um servidor MongoDB local que tem foi configurado com controle de acesso, você precisará fornecer informações adicionais para se conectar. Você precisará fornecer pelo menos um nome de usuário e senha para se conectar usando o --username associado e --password opções:
mongo --username <mongo_username> --password

Colocando a --password opção no final e não fornecer a senha embutida indica que você deseja que o MongoDB solicite uma senha. Isso é mais seguro do que fornecer uma senha no próprio comando, pois ela pode ser visível ou recuperável por meio do histórico do shell, listas de processos e outros mecanismos.

O servidor MongoDB solicitará a senha do usuário antes de se conectar ao banco de dados:
MongoDB shell version v.4.4.6Enter password:

Após a autenticação bem-sucedida, você deve estar conectado ao banco de dados e poder continuar sua sessão normalmente.

Você também pode fornecer essas informações passando uma string de conexão em vez de usar o --username e --password opções:
mongo "mongodb://<mongo_username>:@127.0.0.1"

Como indicamos que o usuário tem uma senha com o <username>: sintaxe, mas não forneceu uma, o mongo shell solicitará a senha.

Alternativamente, você também pode autenticar depois de conectar com o mongo normal comando usando o db.auth comando.

Primeiro, conecte-se ao banco de dados MongoDB sem fornecer credenciais:
mongo

Você receberá um prompt de comando como de costume, mas se o controle de acesso estiver ativado, você não terá permissão para executar muitas ações até autenticar. Por exemplo, o show dbs O comando provavelmente estará vazio, pois você não tem acesso para consultar os bancos de dados disponíveis:
show dbs

Para autenticar, primeiro selecione o banco de dados no qual seu usuário está definido. Na maioria das vezes, esse será o admin base de dados:
use admin

Depois, use db.auth() para fornecer seu nome de usuário e solicitar um prompt de senha:
db.auth({user: "<mongo_username>", passwordPrompt()})

Você será solicitado a fornecer a senha da conta de usuário como antes:
Enter password:

Se você for bem-sucedido, o servidor produzirá 1 :
Enter password:1

Agora você terá o acesso regular do usuário que você autenticou como:
show dbs
admin   0.000GBconfig  0.000GBlocal   0.000GB

Você pode visualizar a lista de usuários autenticados e funções associadas à conexão atual a qualquer momento digitando:
db.runCommand("connectionStatus")
{        "authInfo" : {                "authenticatedUsers" : [                        {                                "user" : "root",                                "db" : "admin"                        }                ],                "authenticatedUserRoles" : [                        {                                "role" : "userAdminAnyDatabase",                                "db" : "admin"                        },                        {                                "role" : "readWriteAnyDatabase",                                "db" : "admin"                        }                ]        },        "ok" : 1}


Conectando-se a um banco de dados remoto


Se você quiser se conectar a um banco de dados remoto do MongoDB, precisará fornecer alguns detalhes adicionais ao usar o mongo Concha.

Especificamente, você precisará incluir o --host opção e potencialmente a --port opção também se o servidor MongoDB estiver escutando em uma porta não padrão. Em quase todos os casos, você também precisará fornecer o --user e --password opções para autenticar no servidor remoto também.

A estrutura básica do comando ao se conectar a um banco de dados MongoDB remoto, portanto, se parece com isso:
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password

Conforme mencionado na seção sobre conexão com um banco de dados local, colocando o --password opção no final e não fornecer a senha inline indica que você deseja o mongo shell para solicitar uma senha. Isso é mais seguro do que fornecer uma senha no próprio comando, pois ela pode ser visível ou recuperável por meio do histórico do shell, listas de processos e outros mecanismos.

O servidor MongoDB solicitará a senha do usuário antes de se conectar ao banco de dados:
MongoDB shell version v.4.4.6Enter password:

Após a autenticação bem-sucedida, você deve estar conectado ao banco de dados e poder continuar sua sessão normalmente.

Você também pode fornecer essas informações passando uma string de conexão em vez de usar o --host , --port , --username e --password opções:
mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"

Como indicamos que o usuário tem uma senha com o <username>: sintaxe, mas não forneceu uma, o mongo shell solicitará a senha.


Ajustando a configuração de autenticação de um servidor MongoDB


Se você quiser modificar as regras que determinam como os usuários podem se autenticar em suas instâncias do MongoDB, você pode fazer isso modificando a configuração do seu servidor. Você pode descobrir como modificar a configuração de autenticação do MongoDB neste artigo.


Conclusão


Neste guia, abordamos a autenticação do MongoDB do lado do cliente. Demonstramos como usar o mongo shell para se conectar a instâncias de banco de dados locais e remotas usando vários métodos.

Saber como se conectar a várias instâncias do MongoDB é vital quando você começa a trabalhar no sistema de banco de dados. Você pode executar uma instância local do MongoDB para desenvolvimento que não precise de nenhuma autenticação especial, mas seus bancos de dados em preparação e produção quase certamente exigirão autenticação. Ser capaz de autenticar em ambos os casos permitirá que você trabalhe bem em diferentes ambientes.