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.