Executando verificação de segurança...
1

Instalando o MongoDB

Objetivo

O objetivo deste artigo será demonstrar a instalação e operação básica do MongoDB Community

Instalando as dependências

sudo apt-get install gnupg curl

Obtendo a chave GPG do repositório

curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
   --dearmor

Criando o fonte de sources.list

Criar um sources.list, aqui tenha atenção você deve criar para a sua versão de distribuição, nesse exemplo, estou fazendo para o Ubuntu 22.04 (Jammy) consulte a documentação de referencia.

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Atulizando a base de pacotes

sudo apt-get update

Fazendo a instalação propriamente dita

sudo apt-get install -y mongodb-org

Esse comando vai instalar a última versão, para instalar uma versão específica, você pode fazer algo do tipo:

sudo apt-get install -y mongodb-org=6.0.8 mongodb-org-database=6.0.8 mongodb-org-server=6.0.8 mongodb-org-mongos=6.0.8 mongodb-org-tools=6.0.8

Lidando com o serviço

Como eu estou em um Ubuntu 22.04 vou utilizar o systemd (systemctl) para controlar o serviço do MongoDB, em alguns casos pode ser que seja preciso utilizar System V Init (service), consulte a documentação.

Os comandos do systemd são bem simples:

Isso inicia o serviço

sudo systemctl start mongod

Se você receber o erro Failed to start mongod.service: Unit mongod.service not found. então execute:

sudo systemctl daemon-reload

Esse comando exibe o status do servidor

sudo systemctl status mongod

E esse permite habilitar o servidor para que inicie junto ao host

sudo systemctl enable mongod

Se você precisar parar o serviço, utilize stop

sudo systemctl stop mongod

E pra reiniciar é quase igual

sudo systemctl restart mongod

Testando

Agora vamos testar se tudo está ok ! Para acessar o mongodb utilizamos o comando mongosh

❯ mongosh
Current Mongosh Log ID:	64c361b46ad84ae07c01d0a1
Connecting to:		mongodb://127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+1.10.1
Using MongoDB:		6.0.8
Using Mongosh:		1.10.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

------
   The server generated these startup warnings when booting
   2023-07-28T03:35:29.562-03:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
   2023-07-28T03:35:29.891-03:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
   2023-07-28T03:35:29.891-03:00: vm.max_map_count is too low
------

test>

Exibindo databases

Podemos exibir as databases com o comando show dbs

test> show dbs
admin   132.00 KiB
config   12.00 KiB
local    72.00 KiB

Criando databases

Vamos criar uma database, fazemos isso com o comando use

test> use friends
switched to db friends
friends>

Caso você precise saber em qual databse você está basta utilizar o comando db que tem uma referência para a database, veja:

friends> db
friends

Excluindo databases

Basicamente os comandos do mongodb se resumem a sintaxe db.<database>.<comando>.

Para excluir a database você pode fazer o seguinte:

friends> db.dropDatabase()
{ ok: 1, dropped: 'friends' }

Controle de Acesso

Criando um usuário

Vamos criar um usuário para garantir a segurança de acesso ao nosso servidor. Para isso selecione a database admin:

test> use admin
switched to db admin

Crie o usuário e uma senha

admin> db.createUser(
...   {
...     user: "dev",
...     pwd: passwordPrompt(),
...     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
...  }
... )
Enter password
devadmin
********{ ok: 1 }

E encerre a conexão.

admin> exit

Configurando o servidor

Agora precisamos dizer ao mongodb que todo acesso precisa ser autenticado pra isso vamos editar o arquivo /etc/mongod.conf

sudo nano /etc/mongod.conf

Esse arquivo tem esse formato:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Vamos alterar aquela seção #security deixando ela assim

#security:
security:
  authorization: enabled

O arquivo completo fica assim:

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1


# how the process runs
processManagement:
  timeZoneInfo: /usr/share/zoneinfo

#security:
security:
  authorization: enabled

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:

Agora vamos riniiciar o serviço

sudo systemctl restart mongod

Verificar seu status, para saber se não houve erros na configuração

 sudo systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vend>
     Active: active (running) since Fri 2023-07-28 03:44:56 -03; 19s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 289625 (mongod)
     Memory: 166.0M
        CPU: 398ms
     CGroup: /system.slice/mongod.service
             └─289625 /usr/bin/mongod --config /etc/mongod.conf

jul 28 03:44:56 machinewar systemd[1]: Started MongoDB Database Server.
jul 28 03:44:56 machinewar mongod[289625]: {"t":{"$date":"2023-07-28T06

Fazendo login

E então podemos fazer login:

mongosh -u dev -p --authenticationDatabase admin

Enter password: ********
Current Mongosh Log ID:	64c36434a5483229182dd678
Connecting to:		mongodb://<credentials>@127.0.0.1:27017/?directConnection=true&serverSelectionTimeoutMS=2000&authSource=admin&appName=mongosh+1.10.1
Using MongoDB:		6.0.8
Using Mongosh:		1.10.1

For mongosh info see: https://docs.mongodb.com/mongodb-shell/

test>

Vamos encerrar a conexão

test> exit

Desabilitando o serviço

Como pra mim interessa apenas ter apenas o client mongosh e eu não quero ficar rodando o servidor vou desabilitar ele:

Pra isso vou parar o serviço

sudo systemctl stop mongod

E desabilitar

sudo systemctl disable mongod

Se verificar seu status vai estar inativo

sudo systemctl status mongod
○ mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vend>
Active: inactive (dead)
Docs: https://docs.mongodb.org/manual

Bom pessoal é isso aí ! Eu tive bastante trabalho para encontrar essa documentação e fazer essa instalação espero que esse artigo poupe o sofrimento de mais alguém.

Um abraço !

Carregando publicação patrocinada...
2
1
1
1