DEV Community

Cover image for Instalando e configurando o MongoDB no Ubuntu
Marcelo Michels
Marcelo Michels

Posted on • Edited on

Instalando e configurando o MongoDB no Ubuntu

Para instalar o MongoDB em um servidor linux é muito fácil, porem precisamos configurar alguns itens de segurança antes de começar utiliza-lo em nossas aplicações.

Para seguir os passos abaixo vamos considerar que você já tenha uma maquina em execução com Ubuntu rodando.

Instalando o MongoDB

Vamos seguir uma sequencia de comandos para realizar a instalação seguindo a documentação oficial. Nos Links abaixo a versão do MongoDB fica explicita na URL utilizada, certifique-se de consultar a documentação acima pra copiar esses links sempre com a ultima versão disponível.

1 - Importe a chave pública usada pelo sistema de gerenciamento de pacotes.

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
Enter fullscreen mode Exit fullscreen mode

2 - Crie um arquivo de lista para MongoDB.

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
Enter fullscreen mode Exit fullscreen mode

3 - Recarregue o banco de dados do pacote local.

sudo apt-get update
Enter fullscreen mode Exit fullscreen mode

4 - Instale o pacote MongoDB.

sudo apt-get install -y mongodb-org
Enter fullscreen mode Exit fullscreen mode

5 - Iniciar o serviço do MongoDB

sudo service mongod start
Enter fullscreen mode Exit fullscreen mode

6 - Verifique se a instalação foi concluída e se o serviço ficou executando

sudo service mongod status
# Output
mongod.service - MongoDB Database Server
  Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
  Active: active (running) since Sat 2021-02-20 11:14:01 -03; 39s ago
  Docs: https://docs.mongodb.org/manual
  Main PID: 14819 (mongod)
  Memory: 64.5M
Enter fullscreen mode Exit fullscreen mode

7 - Você pode opcionalmente garantir que o MongoDB iniciará após uma reinicialização do sistema, emitindo o seguinte comando:

sudo systemctl enable mongod
Enter fullscreen mode Exit fullscreen mode

Pronto, já temos nosso MongoDB rodando em nossa maquina, mas ainda está sem senha e sem usuários para autenticação. Caso essa instalação seja em uma maquina de desenvolvimento até aqui já é o suficiente para conectar nosso Robomongo (Client Desktop) ou nossa aplicação a ele. Mas caso essa instalação vai ser utilizada pra um ambiente de servidor (produção ou homologação) vamos precisar permitir acesso externo a ele e também cadastrar usuários para autenticação, que veremos logo em seguida.

Criando usuários e definindo que queremos usar autenticação

Na maquina que instalamos o MongoDB vamos abrir o terminal e executar mongo para acessar a interface de linha de comando do interna do MongoDB onde vai aparecer um prefixo >. Quando quiser sair deste terminal digite > exit.

Dentro da linha de comando do MongoDB vamos executar o comando abaixo para dizer em qual banco de dados queremos executar nossos comandos.

> use admin
# Output
switched to db admin
Enter fullscreen mode Exit fullscreen mode

Agora vamos criar um usuário que chamado root com a senha root que tenha permissão total para realizar qualquer operação dentro do MongoDB.

> db.createUser({
    user: "root",
    pwd: "root",
    roles:[{ "role" : "root", "db" : "admin" }]
  });
// Output
Successfully added user: {...}
Enter fullscreen mode Exit fullscreen mode

Definindo que queremos usar autenticação

Apenas criar o usuário não vai exigir que ele seja utilizado para acessar o MongoDB, precisamos alterar o arquivo de configuração para sinalizar que queremos utilizar autenticação.

# sair no terminal do mongo
> exit
# editar o arquivo de configuração no mongo
sudo nano /etc/mongod.conf
Enter fullscreen mode Exit fullscreen mode

encontre a linha

#security:
Enter fullscreen mode Exit fullscreen mode

e troque por

security:
  authorization: enabled
Enter fullscreen mode Exit fullscreen mode

Caso queira acessar o MongoDB de outras maquinas já aproveite e troque a linha

  bindIp: 127.0.0.1
Enter fullscreen mode Exit fullscreen mode

por

  bindIp: 0.0.0.0
Enter fullscreen mode Exit fullscreen mode

Agora vamos reiniciar o serviço do MongoDB para considerar essas novas configurações

sudo service mongod restart
Enter fullscreen mode Exit fullscreen mode

A partir de agora quando for conectar no nosso banco de dados mongodb://localhost:27017 sem passar usuário e senha não vamos mais conseguir. Mas caso utilize nosso usuário e senha vamos conseguir mongodb://root:root@localhost:27017/admin.
Note que uma string de conexão com MongoDB é composta da seguinte maneira mongodb://<usuario>:<senha>@localhost:27017/<banco-usado-na-criacao-usuario>

Criando um usuário mais restrito

Não queremos um usuário com permissão total ao MongoDB para utilizar-lo em nossa aplicação, então vamos criar um usuário que tenha acesso apenas a um determinado banco e que tenha apenas permissão de escrita e leitura. Leia mais sobre outras roles de acesso.

Vamos criar um usuário chamado app com a senha app.senha.123 que vai ter acesso apenas ao banco de dados meu-banco-1.

O primeiro passo vai ser autenticar-se em nosso usuário root (acesso completo)

> use admin
> db.auth("root","root");
Enter fullscreen mode Exit fullscreen mode

Depois de autenticados dentro do banco admin devemos identificar qual o banco de dados queremos criar um novo usuário.

> use meu-banco-1
Enter fullscreen mode Exit fullscreen mode

Agora sim podemos criar nosso usuário

> db.createUser({
    user: "app",
    pwd: "app.senha.123",
    roles : [{"role" : "readWrite", "db" : "meu-banco-1"}]
  });
Enter fullscreen mode Exit fullscreen mode

Pronto, agora temos um usuário que tem acesso apenas pra leitura e gravação em apenas um determinado banco.

Alterando a senha de um usuário MongoDB

Para alterar a senha de um usuário MongoDB basta acessar o banco de dados qual ele pertence e executar db.changeUserPassword(<usuario>,<nova-senha>)

> use meu-banco-1
> db.changeUserPassword("app", "app.senha.456");
Enter fullscreen mode Exit fullscreen mode

Por hoje é isso, em breve teremos mais posts sobre MongoDB, de como criar um backup automatizado do nosso banco e salvar esse backup em um bucket s3 da aws.

Top comments (0)