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:
[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
Segundo passo:
verifique se o repositório aparece na listagem:
yum repolist
Terceiro passo:
Instalar o pacote do mongo db
yum install -y mongodb-org
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:
[root@mongodb ~]# getenforce
Resultado: Enforcing
Alterando o selinux para permissive
[root@mongodb ~]# setenforce 0
Checar se o selinux está Permissive:
[root@mongodb ~]# getenforce
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:
systemctl start mongod systemctl status mongod systemctl enable mongod
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:
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 }
Por default são criados esses 3 schemas: admin, config e local! Vamos criar um schema chamado dbford e criar uma collection de carros:
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"});
Schema criado e registros devidamente inseridos. Para consultar as tabelas do mongodb, basta rodar o comando:
show collections
Para visualizar as linhas inseridas na sua collection, basta digitar o comando db.nomedacollection.find(), no nosso caso ficaria:
db.carros.find()
Ou se preferir em outro formato:
db.carros.find().pretty()
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:
db.createUser({ user: "leonardo", pwd: "R10DT9CAM", roles: [ { role: "root", db: "admin" } ] })
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:
mongo -u leonardo -p R10DT9CAM --authenticationDatabase admin
Para listar os usuários existentes na base:
db.getUsers()
Para remover o usuário:
db.dropUser('leonardo')
E o backup? Como que fica? Simples!
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
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.