> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.squarecloud.app/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Como criar um banco MongoDB e conectar

## 1. Pré-requisitos

Para seguir este tutorial, você precisará de:

* **Plano Standard ou superior:** O gerenciamento de bancos de dados na Square Cloud é um recurso disponível a partir do plano Standard.
* **Acesso ao Dashboard:** Suas credenciais de acesso à plataforma Square Cloud.

---

## 2. Criando a instância de Banco de Dados

1.  Acesse o [Dashboard da Square Cloud](https://squarecloud.app/pt-br/dashboard).
2.  Acesse a página de [Bancos de dados](https://squarecloud.app/pt-br/dashboard/databases) e selecione a opção **Criar bancos de dados**.
3.  Dê um nome à sua instância.
4.  Escolha o **MongoDB** na lista de bancos de dados disponíveis.
5.  Selecione a RAM desejada e confirme a criação.
6.  Após a inicialização, você terá acesso às credenciais fundamentais em um URL: `Host`, `Port`, `User` e `Password`.

---

## 3. Entendendo os certificados SSL/TLS

A segurança no MongoDB é feita através de protocolos TLS (Transport Layer Security). A Square Cloud fornece os certificados necessários para que o driver da sua aplicação valide a identidade do servidor e do cliente.

Na aba de configurações do seu banco de dados, você encontrará:

* **`certificate.pem`**: O arquivo combinado contendo a chave privada e o certificado. Este é o arquivo principal para a maioria dos drivers.
* **`client-key.key`** e **`client-cert.crt`**: Disponibilizados separadamente caso sua infraestrutura exija arquivos distintos para a chave e para o certificado público.

---

## 4. Configuração técnica da conexão

No MongoDB, a conexão segura é habilitada através do parâmetro `tls`. Ao utilizar o arquivo `.pem`, você deve referenciá-lo em dois pontos cruciais do driver de conexão para garantir a validação mútua:

* **tlsCAFile:** Caminho para o `certificate.pem` (Valida a autoridade do servidor).
* **tlsCertificateKeyFile:** Caminho para o `certificate.pem` (Identifica o cliente).
* **tls:** Deve ser definido como `true`.

### Exemplo de Connection String (URI)

```text
mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}/tls=true&tlsCAFile=./certificate.pem&tlsCertificateKeyFile=./certificate.pem
```

---

### Exemplos de conexões via código

Se sua conexão for pelos dados separados, basta seguir como nos exemplos à seguir:

* Exemplo Python:

```python
from pymongo import MongoClient

url_conexao = "mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}"

client = MongoClient(
    url_conexao,
    tlsCertificateKeyFile="certificate.pem",
    tlsCAFile="certificate.pem"
)
```

* Exemplo JavaScript:

```js
import { MongoClient } from "mongodb";
import fs from "fs";

const uri = "mongodb://default:{password}@square-cloud-db-{id}.squareweb.app:{port}";

const client = new MongoClient(uri, {
  tls: true,
  tlsCertificateKeyFile: "certificate.pem",
  tlsCAFile: "certificate.pem",
});
```

---

## 5. Boas práticas e segurança

* **Arquivo .gitignore:** O arquivo `certificate.pem` é uma credencial de segurança. Adicione-o ao seu `.gitignore` imediatamente para evitar vazamentos em repositórios.

---

## Extra

Para melhor visualização, veja nosso vídeo tutorial: https://www.youtube.com/watch?v=K9-J6-PO3QU