Guia de instalação do mongoDB

MongoDB é o banco de dados mais popular quando falamos sobre NOSQL! Ele pode não ser o melhor, o pior, o intermediário, vai do uso de cada, mas com certeza se você perguntar a qualquer pessoa da área de dados para citar 3 bancos NOSQL, a primeira resposta certamente será mongoDB! É indiscutível que o “verdinho” é o mais conhecidos dentre as opções do mercado, mesmo ele se tratando de uma vertente dentro do gigantesco mundo NOSQL, que é a vertente orientada a documentos. Alguns bem conhecidos são: Cassandra, CouchDB, ElasticSearch, Redis, Dynamo, Hbase, dentre outros.

Hoje vou mostrar a vocês como fazer a instalação do MongoDB, bem como a criação de um database/schema e um usuário para aplicação conectar!

Estou utilizando o sistema operacional CentOS 7 na versão minimal e os binários do mongoDB 4.2

Primeiro passo:

Crie um arquivo chamado /etc/yum.repos.d/mongodb-org-4.2.repo no sistema operacional e insira as informações do repositório:

[code lang=”sql”]
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc
[/code]

Segundo passo:

verifique se o repositório aparece na listagem:

[code lang=”sql”]
yum repolist
[/code]

Terceiro passo:

Instalar o pacote do mongo db

[code lang=”sql”]
yum install -y mongodb-org
[/code]

Verifique que para fazer a instalação, é preciso fazer um download de 119 MB! Aperte a tecla Y e em seguida aperte ENTER, conforme imagem abaixo:

Feito isso, o mongoDB estará instalado no seu servidor!

Antes de iniciar o serviço, precisamos ajustar o SELINUX, alterando sua configuração para permissive usando o comando setenforce:

Checar se o selinux está Permissive:

[code lang=”sql”]
[root@mongodb ~]# getenforce
[/code]

Resultado: Enforcing

Alterando o selinux para permissive

[code lang=”sql”]
[root@mongodb ~]# setenforce 0
[/code]

Checar se o selinux está Permissive:

[code lang=”sql”]
[root@mongodb ~]# getenforce
[/code]

Resultado: Permissive

O próximo passo é iniciar o serviço do MongoDB. Digite os 3 comandos abaixo para iniciar, verificar o status e configurar a inicialização automática do serviço:

[code lang=”sql”]
systemctl start mongod
systemctl status mongod
systemctl enable mongod
[/code]

Banco no ar! Agora vem a melhor parte, conectar e criar os schemas. Note que o serviço é chamado de mondod e a console é chamada de mongo!

Para logar no banco, digite o comando mongo e em seguida aperte enter:

Por default, algumas configurações são de fábrica e o próprio mongo faz o alerta sugerindo mudanças, porém isso é tópico para outro post que irei abordar as melhores práticas de configuração do mongoDB.

Dentro do console mongo, entre no schema admin e digite o comando db.adminCommand( { listDatabases: 1 } ) para listar os schemas existentes:

[code lang=”sql”]
use admin;
switched to db admin

db.adminCommand( { listDatabases: 1 } )
{
"databases" : [
{
"name" : "admin",
"sizeOnDisk" : 135168,
"empty" : false
},
{
"name" : "config",
"sizeOnDisk" : 110592,
"empty" : false
},
{
"name" : "local",
"sizeOnDisk" : 40960,
"empty" : false
},
],
"totalSize" : 327680,
"ok" : 1
}
[/code]

Por default são criados esses 3 schemas: admin, config e local! Vamos criar um schema chamado dbford e criar uma collection de carros:

[code lang=”sql”]
use dbford;
db.carros.insert({idCarro: 1, nome: "Focus"});
db.carros.insert({idCarro: 2, nome: "Fusion"});
db.carros.insert({idCarro: 3, nome: "Ranger"});
db.carros.insert({idCarro: 4, nome: "Ka"});
db.carros.insert({idCarro: 5, nome: "EcoSport"});
[/code]

Schema criado e registros devidamente inseridos. Para consultar as tabelas do mongodb, basta rodar o comando:

[code lang=”sql”]
show collections
[/code]

Para visualizar as linhas inseridas na sua collection, basta digitar o comando db.nomedacollection.find(), no nosso caso ficaria:

[code lang=”sql”]
db.carros.find()
[/code]

Ou se preferir em outro formato:

[code lang=”sql”]
db.carros.find().pretty()
[/code]

E por fim vamos aprender como criar usuários para conectar no banco! A sintaxe é simples e pode ser adaptada a seu critério, no script abaixo estou criando um usuário com privilégios avançados:

[code lang=”sql”]
db.createUser({
user: "leonardo",
pwd: "R10DT9CAM",
roles: [
{ role: "root", db: "admin" }
]
})
[/code]

Resultado do comando:

As roles possíveis são: read, readwrite, dbAdmin, clusterAdmin, clusterManager, clusterMonitor, backup, restore, readAnyDatabase, readWriteAnyDatabase, useradminAnyDatabase, dbadminAnyDatabase, dbOwner, userAdmin e root. A descrição completa de cada uma você verificar nesse link: https://docs.mongodb.com/manual/reference/built-in-roles/#database-user-roles !

Para logar com o usuário que acabamos de criar:

[code lang=”sql”]
mongo -u leonardo -p R10DT9CAM –authenticationDatabase admin
[/code]

Para listar os usuários existentes na base:

[code lang=”sql”]
db.getUsers()
[/code]

Para remover o usuário:

[code lang=”sql”]
db.dropUser(‘leonardo’)
[/code]

E o backup? Como que fica? Simples!

[code lang=”sql”]
mongodump
mongodump –host server01 –port 27017
mongodump –out /u01/backup/
mongodump –host server01 –port 27017 –username admin –password "S3nh@F0rt&" –out /u01/backup/mongodb-20200406
[/code]

Esse foi o primeiro post relacionado a MongoDB, basicamente aprendemos a:

Instalar o MongoDB em uma distribuição Linux

Criar e listar os schemas
Criar e lister as collections
Inserir dados na collection
Listar os dados existentes na collection
Criar, listar e dropar usuários
Nos próximos posts pretendo aprofundar em temas como restore, desempenho e segurança!

Até mais.

Leonardo Pedroso

Leonardo Pedroso

Profissional de TI experiência em administração de banco de dados: SQL Server 2000 a 2019, Oracle 11g a 19c, PostgreSQL, MySQL, MongoDB, Cassandra. Atua realizando análise de desempenho, DR e HA, implantação, administração de banco de dados em cluster e implementação de projetos de banco de dados NoSQL (MongoDB, Cassandra), bem como automação de processos utilizando Shell script, Powershell (dbatools), e players de Cloud: Azure e Aws.