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 -
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
3 - Recarregue o banco de dados do pacote local.
sudo apt-get update
4 - Instale o pacote MongoDB.
sudo apt-get install -y mongodb-org
5 - Iniciar o serviço do MongoDB
sudo service mongod start
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
7 - Você pode opcionalmente garantir que o MongoDB iniciará após uma reinicialização do sistema, emitindo o seguinte comando:
sudo systemctl enable mongod
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
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: {...}
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
encontre a linha
#security:
e troque por
security:
authorization: enabled
Caso queira acessar o MongoDB de outras maquinas já aproveite e troque a linha
bindIp: 127.0.0.1
por
bindIp: 0.0.0.0
Agora vamos reiniciar o serviço do MongoDB para considerar essas novas configurações
sudo service mongod restart
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");
Depois de autenticados dentro do banco admin
devemos identificar qual o banco de dados queremos criar um novo usuário.
> use meu-banco-1
Agora sim podemos criar nosso usuário
> db.createUser({
user: "app",
pwd: "app.senha.123",
roles : [{"role" : "readWrite", "db" : "meu-banco-1"}]
});
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");
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)