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.