# Ligar à Sua Base de Dados Remotamente

Source: https://support.kapsulehost.com/pt-pt/database-remote-access

Onde encontrar as credenciais da sua base de dados, por que motivo as ligações remotas directas na porta 3306 são rejeitadas, e como ligar uma ferramenta de desktop através de um túnel SSH em alternativa.

Todos os sites de alojamento web da KapsuleHost com uma base de dados têm a sua própria base de dados, o seu próprio utilizador de base de dados, e credenciais que pode consultar em qualquer momento. O que não pode fazer é ligar-se a ela directamente pela internet, e isso é deliberado. Este guia aborda as credenciais, as duas formas de acesso suportadas, e como configurar o túnel de que as ferramentas de base de dados para desktop precisam.

## Encontrar as Suas Credenciais

Vá a **Websites**, clique no site, depois **Base de dados**.

A página mostra cinco coisas:

| Campo | Valor |
|---|---|
| Host | `127.0.0.1` |
| Porta | `3306` |
| Base de dados | o nome da sua base de dados |
| Nome de utilizador | o seu utilizador de base de dados |
| Palavra-passe | ocultada, com um botão para revelar e um botão para copiar |

A palavra-passe não é uma revelação única. Pode voltar e lê-la sempre que precisar, por isso não há necessidade de a guardar separadamente.

O servidor de base de dados é MariaDB 10.11, que é compatível com MySQL. Isso é relevante de uma forma prática: um dump exportado de uma versão recente do MySQL pode conter collations que o MariaDB não reconhece, e a importação falhará com um erro de "unknown collation". Se isso acontecer, volte a exportar usando uma collation amplamente compatível como `utf8mb4_unicode_ci`, ou procure e substitua-a no ficheiro de dump antes de importar.

![A aba Database de um site no KPanel, mostrando os detalhes de ligação à base de dados](https://support.kapsulehost.com/help/screenshots/database-remote-access.84df4ba6.webp)

## Por Que Razão o Host É 127.0.0.1

`127.0.0.1` significa "esta máquina". O servidor de base de dados apenas escuta na interface interna da própria máquina, e a porta 3306 também não está aberta à internet a nível da firewall. Não existe nenhuma opção no painel para a abrir, e não há nenhuma lista de IPs permitidos para isso.

Isto não é um descuido. Uma porta de base de dados exposta à internet é uma das coisas mais fiavelmente exploradas em alojamento: é constantemente sondada, revela informação de versão a quem se ligar, e uma única palavra-passe fraca faz-lhe perder o site inteiro. Mantê-la fechada elimina toda essa categoria de risco.

Por isso, uma string de ligação que use o endereço IP público do seu site e a porta 3306 falhará sempre, de qualquer lugar, em todos os planos. Existem, em alternativa, duas formas de acesso suportadas.

## Opção 1: phpMyAdmin no Browser

A forma mais fácil para uma vista rápida, uma edição, ou uma pequena importação ou exportação.

Na página Database, clique em **Abrir phpMyAdmin**. É autenticado directamente com as credenciais do seu próprio site e vê apenas as suas próprias bases de dados.

O link que faz isto é deliberadamente de curta duração, e falha de formas que parecem erros mas não são:

- **Expira em 60 segundos.** Clique nele logo que aparecer.
- **Funciona apenas uma vez.** Voltar atrás e recarregar não funcionará; gere um novo.
- **Tem de ser aberto a partir do mesmo browser e da mesma rede** a partir da qual o solicitou. Se copiar o link para outro dispositivo, ou se a sua ligação mudar de endereço a meio do processo, será rejeitado.

Se vir "This link has already been used" ou uma mensagem sobre uma incompatibilidade de IP, isso é a protecção a funcionar. Volte à página Database e clique no botão novamente.

Para trabalhar com o próprio phpMyAdmin, consulte [Utilizar o phpMyAdmin](https://support.kapsulehost.com/pt-pt/sites-phpmyadmin).

## Opção 2: Um Túnel SSH para Ferramentas de Desktop

Se quiser usar um cliente de desktop, este é o caminho suportado. O túnel abre uma ligação encriptada ao servidor e reencaminha uma porta na sua própria máquina através dela, de modo que o seu cliente se liga ao que parece ser uma base de dados local.

### O Que Precisa Primeiro

Uma chave SSH no site. A autenticação por palavra-passe não é aceite, por isso este passo não é opcional.

1. Vá a **Websites**, o site, **Definições**, depois **Chaves SSH**.
2. Cole a chave pública que já usa, ou gere um novo par de chaves a partir do painel.
3. Anote o nome de utilizador mostrado nessa página. É o utilizador de sistema do seu site, e é com ele que se liga.

Se gerar uma chave no painel, **a chave privada é mostrada uma vez e nunca mais**. Guarde-a imediatamente, e mantenha-a num local que só você consiga ler.

Também receberá um email sempre que uma chave for adicionada ao seu site. Isso é intencional. Se chegar um e não tiver sido você, revogue-a imediatamente nessa página e leia [Se o Seu Site For Hackeado](https://support.kapsulehost.com/pt-pt/site-hacked-what-to-do).

Consulte [Adicionar Chaves SSH](https://support.kapsulehost.com/pt-pt/adding-ssh-keys) para o passo a passo completo.

> **Warning:** Uma conta SFTP criada no separador SFTP não funcionará para um túnel. Essas contas são apenas para transferência de ficheiros, sem shell e sem reencaminhamento de portas. O tunneling requer o próprio utilizador SSH do site com uma chave. Consulte [Acesso SFTP](https://support.kapsulehost.com/pt-pt/sftp-access).

### Abrir o Túnel

Num terminal na sua própria máquina:

```sh
ssh -N -L 3307:127.0.0.1:3306 your-ssh-user@cp1-kapsule.kapsulehost.com
```

Substitua `your-ssh-user` pelo nome de utilizador da página Chaves SSH. Decompondo isto:

- `-N` significa não executar um comando, apenas manter o túnel aberto.
- `-L 3307:127.0.0.1:3306` reencaminha a porta 3307 na sua máquina para a porta 3306 no servidor.
- A porta 3307 é usada em vez da 3306 para não entrar em conflito com uma base de dados que possa ter a correr localmente.

O comando não imprime nada quando funciona. Isso está correcto. Deixe a janela do terminal aberta durante todo o tempo que precisar da ligação, e pressione Ctrl+C para a fechar.

### Ligar o Seu Cliente

Com o túnel aberto, aponte a sua ferramenta de base de dados para:

| Definição | Valor |
|---|---|
| Host | `127.0.0.1` |
| Porta | `3307` |
| Nome de utilizador | o nome de utilizador da base de dados da página Database |
| Palavra-passe | a palavra-passe da base de dados da página Database |
| Base de dados | o nome da sua base de dados |

Note a divisão: o nome de utilizador de **SSH** é o utilizador de sistema do seu site, e o nome de utilizador da **base de dados** é um diferente, obtido na página Database. Confundir os dois é, de longe, o erro mais comum aqui.

A maioria dos clientes de desktop também tem uma opção integrada de "ligar através de túnel SSH", que faz exactamente o descrito acima sem um terminal separado. Preencha o host SSH `cp1-kapsule.kapsulehost.com`, a porta 22, o seu nome de utilizador SSH, e o seu ficheiro de chave privada, depois os campos da base de dados como indicado acima.

Consulte [Túnel SSH para a Base de Dados](https://support.kapsulehost.com/pt-pt/database-ssh-tunnel) para a configuração específica de cada cliente.

## Linha de Comandos no Servidor

Se se sentir confortável num terminal, não precisa mesmo de um túnel. Ligue-se por SSH e trabalhe directamente no servidor:

```sh
ssh your-ssh-user@cp1-kapsule.kapsulehost.com
mysqldump -u DBUSER -p DBNAME > backup.sql
```

Isto é muito mais rápido do que extrair uma base de dados grande através de um túnel, e é a forma correcta de fazer um dump manual antes de uma alteração arriscada. Especificamente para WordPress, [WP-CLI](https://support.kapsulehost.com/pt-pt/wordpress-wp-cli) é geralmente ainda melhor.

## Resolução de Problemas

**"Connection refused" na porta 3306 a partir da sua própria máquina.** Esperado. Ver acima. Use um túnel.

**O comando do túnel pede uma palavra-passe.** A sua chave não está a ser apresentada ou não está instalada. Verifique se a chave está na página Chaves SSH e adicione `-i /path/to/your/private/key` ao comando.

**"Permission denied (publickey)".** Nome de utilizador errado, ou chave errada. O nome de utilizador é o que consta na página Chaves SSH, não o seu email de login da KapsuleHost.

**"Address already in use" para a porta 3307.** Já há um túnel aberto, ou outra coisa está a usar essa porta. Fecha o outro, ou escolha uma porta local diferente, como 3308.

**O túnel abre mas o cliente não consegue ligar-se.** Confirme que o seu cliente está apontado para `127.0.0.1` e a porta local escolhida, não para o seu domínio.

**"Access denied for user".** Credenciais da base de dados, não de SSH. Revele e copie-as novamente a partir da página Database.

**"Unknown collation" na importação.** Abordado acima. Volte a exportar com uma collation compatível.

> **Important:** Tudo o que fizer num cliente de base de dados acontece imediatamente e não pode ser desfeito. Não há passo de confirmação nem reciclagem. Faça uma cópia de segurança antes de executar qualquer coisa que escreva dados. Consulte [Fazer uma Cópia de Segurança](https://support.kapsulehost.com/pt-pt/taking-a-backup).

## Guias Relacionados

- [Utilizar o phpMyAdmin](https://support.kapsulehost.com/pt-pt/sites-phpmyadmin)
- [Túnel SSH para a Base de Dados](https://support.kapsulehost.com/pt-pt/database-ssh-tunnel)
- [Adicionar Chaves SSH](https://support.kapsulehost.com/pt-pt/adding-ssh-keys)
- [Acesso SFTP](https://support.kapsulehost.com/pt-pt/sftp-access)
- [Fazer uma Cópia de Segurança](https://support.kapsulehost.com/pt-pt/taking-a-backup)
- [Websites](https://support.kapsulehost.com/pt-pt/sites-overview)
- [Glossário de Alojamento](https://support.kapsulehost.com/pt-pt/glossary)
