> ## 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 MySQL e conectar

## 1. Pré-requisitos

Para seguir este tutorial, você precisará de:

* **Plano Standard ou superior:** A hospedagem 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/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 **MySQL** 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

A Square Cloud exige conexões criptografadas para garantir a segurança dos dados. Diferente de conexões locais, aqui você precisará de certificados específicos fornecidos pela plataforma.

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

* **`certificate.pem`**: É um arquivo combinado que contém a chave privada (`key`) e o certificado (`cert`). Para a maioria dos drivers de conexão, este é o único arquivo necessário.
* **`client-key.key`** e **`client-cert.crt`**: Disponibilizados separadamente para sistemas ou drivers que exigem arquivos individuais para a chave e para o certificado.

---

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

Para o MySQL, a conexão segura é estabelecida apontando os parâmetros de SSL para o arquivo de certificado. O segredo técnico aqui é que, ao usar o arquivo `.pem`, você deve referenciá-lo em três campos distintos do driver:

* **ca:** Caminho para o `certificate.pem`
* **cert:** Caminho para o `certificate.pem`
* **key:** Caminho para o `certificate.pem`

### Exemplo de connection string (URI)

Se você estiver conectando via string de conexão direta, o formato geralmente segue este padrão (variando conforme o driver):

```text
mysql://squarecloud:{password}@square-cloud-db-{id}.squareweb.app:{port}/{dbname}?ssl-ca=./certificate.pem&ssl-cert=./certificate.pem&ssl-key=./certificate.pem
```

---

### Exemplos de dados separados

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

* Exemplo Python: 

```py
import mysql.connector

con = mysql.connector.connect(
    host="square-cloud-db-{id}.squareweb.app",
    port=7087,
    user="squarecloud",
    password="password",
    ssl_ca="ca-certificate.crt",
    ssl_cert="certificate.pem",
    ssl_key="private-key.key"
)
```

* Exemplo JavaScript:

```js
import mysql from "mysql2/promise"
import fs from "fs"

const con = await mysql.createConnection({
    host: "square-cloud-db-{id}.squareweb.app",
    port: 7080,
    user: "squarecloud",
    password: "password",
    ssl: {
        ca: fs.readFileSync("ca-certificate.crt"),
        cert: fs.readFileSync("certificate.pem"),
        key: fs.readFileSync("private-key.key")
    }
})
```

---

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

* **Arquivo .gitignore:** Nunca envie seus arquivos `.pem`, `.key` ou `.crt` para repositórios públicos (GitHub/GitLab). Adicione-os ao seu `.gitignore`.

---

## Extra

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

