# MariaDB/MySQL com Linux: conectar seu banco de dados a um servidor em nuvem

Você pode conectar facilmente seu banco de dados MySQL ou MariaDB a um servidor Linux em nuvem, permitindo que aplicativos funcionem de forma mais flexível. Com as credenciais corretas e a configuração adequada, a conexão do MariaDB ou MySQL com Linux é realizada de forma simples e rápida.

## Requisitos

- Um servidor Linux em nuvem (qualquer distribuição).
- Pilha LAMP (Apache, MySQL/MariaDB e PHP) instalada e ativa.
- Se você tiver um firewall, deve permitir o acesso à porta 3306 no servidor MySQL/MariaDB.

## Como fazer a conexão MariaDB/MySQL com Linux

Bancos de dados são frequentemente conectados a [servidores em nuvem](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-servidor-em-nuvem/) Linux para operar aplicações de forma flexível e escalável. Assim, diversos serviços ou aplicações web podem acessar os mesmos dados sem a necessidade de instalações locais separadas. Além disso, um servidor em nuvem permite uma gestão simples, backups e atualizações de segurança do banco de dados. Neste tutorial, mostramos como você pode configurar um banco de dados MySQL ou [MariaDB](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/banco-de-dados-mariadb/) em um servidor Linux e conectá-lo com um script PHP.

### Passo 1: criar um banco de dados

Neste tutorial, utilizaremos um banco de dados de teste. Para criar um, primeiro faça o login:

```none
mysql -u root -p
```

Crie o banco de dados de teste com o seguinte comando:

```none
CREATE DATABASE phptest;
```

Agora, mude para o banco de dados de teste:

```none
USE phptest;
```

Crie aqui uma tabela de exemplo simples. Em nosso exemplo, escolhemos uma tabela que armazena funcionários:

```none
CREATE TABLE employees (id INT, name VARCHAR(40));
```

Agora, adicione dois funcionários à tabela:

```none
INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");
```

Para verificar se os registros foram criados corretamente, você pode usar a seguinte consulta SQL:

```none
SELECT * FROM employees;
```

A saída deve ser como segue:

```none
+------+-------+ 
| id  | name |
+------+-------+
| 1  | Alice |
| 2  | Bob  |
+------+-------+
2 rows in set (0,002 sec)
```

### Passo 2: criar um usuário MySQL/MariaDB

Para permitir acesso autenticado e ao mesmo tempo proteger o banco de dados contra acesso não autorizado, você deve criar um usuário MySQL/MariaDB na próxima etapa. Para isso, você deve se conectar novamente ao servidor de banco de dados no cliente MySQL/MariaDB:

```none
mysql -u root -p
```

Com o comando a seguir, você cria um usuário e concede a ele permissões para o banco de dados que criamos no primeiro passo:

```none
CREATE USER [Username]@[Location] IDENTIFIED BY [Senha];
GRANT ALL PRIVILEGES ON [NomeBancoDeDados].* TO [NomeDeUsuario]@[Local];
FLUSH PRIVILEGES;
```

Substitua os seguintes pontos no comando acima:

- `[NomeDoBancoDeDados]` pelo nome do seu banco de dados.
- `[NomeDeUsuario]` pelo nome do usuário que você deseja criar para o seu banco de dados.
- `[Local]` pelo local do script PHP. Se o script PHP e o banco de dados MySQL estiverem no mesmo servidor, use `localhost`. Caso contrário, use o endereço IP do servidor onde o script PHP está localizado.
- `[Senha]` por uma [senha segura](https://www.ionos.com/pt-br/digitalguide/servidor/seguranca/proteja-dados-confidenciais-com-uma-senha-forte/) para seu usuário.

Para, por exemplo, criar um usuário chamado *phpuser* com a senha *Ig86N3tUa9*, que está no mesmo servidor que o banco de dados MySQL e tem acesso ao banco de dados *phptest*, o comando é:

```none
CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;
```

Para criar um segundo usuário chamado *phpuser2*, que se conecta a partir de um servidor com o endereço IP 192.168.0.1, o comando é:

```none
CREATE USER 'phpuser2'@'192.168.0.1' IDENTIFIED BY 'Rq53yur62I';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser2'@'192.168.0.1';
FLUSH PRIVILEGES;
```

### Passo 3: Criar um script PHP

Para verificar a conexão da sua aplicação [PHP](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/o-que-e-php/) em seu servidor Linux com o banco de dados, vamos criar um pequeno script de teste. Com o script, você pode se conectar ao banco de dados de teste, lê dados de uma tabela e os exibe no navegador. Assim, você pode garantir que o usuário, a senha e o host estão configurados corretamente e que o banco de dados está acessível.

Primeiro, crie o script de teste:

```none
sudo nano /var/www/html/phpconnect.php
```

Em seguida, insira o seguinte conteúdo no arquivo:

```html
<html>
<head>
<title>Script de teste de conexão PHP</title>
</head> 
<body> 
<h3>Bem-vindo ao teste de conexão PHP</h3>
<?php
$dbname = [NomeDoBancoDeDados];
$dbuser = [NomeDeUsuario];
$dbpass = [Senha];
$dbhost = [Hostname];
// Criar conexão
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$connect) {
die("Falha na conexão: " . mysqli_connect_error());
}
// Consultar dados
$result = mysqli_query($connect, "SELECT id, name FROM employees");
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: {$row['id']} Nome: {$row['name']}<br>";
} 
mysqli_close($connect); 
?> 
<div class="hash d-none" hidden>hash_a1031f8565960df3e483eb7289a97a315c934db2</div><script data-shy-copy-guard>(function(){var C=[0x00AD,0x200B,0x200C,0x200D,0x2060,0xFEFF];var s=function(t){for(var i=0;i<C.length;i++){t=t.split(String.fromCharCode(C[i])).join("");}return t;};document.addEventListener("copy",function(e){var sel=document.getSelection();if(!sel||sel.isCollapsed||!e.clipboardData){return;}e.clipboardData.setData("text/plain",s(sel.toString()));try{var d=document.createElement("div");d.appendChild(sel.getRangeAt(0).cloneContents());e.clipboardData.setData("text/html",s(d.innerHTML));}catch(x){}e.preventDefault();});})();</script></body>
</html>
```

Substitua \[NomeDoBancoDeDados\], \[NomeDeUsuario\], \[Senha\] e \[Hostname\] pelos dados correspondentes. Se, por exemplo, você quiser testar uma conexão local com o script, onde o script está no mesmo servidor que o banco de dados, escolha:

```none
$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';
```

Para verificar a conexão remota com o script, onde ele está em um servidor diferente do banco de dados, as variáveis precisam dos seguintes valores:

```none
$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';
```

## Solução de problemas em uma conexão remota MySQL/MariaDB

Se sua aplicação PHP ou outro script não consegue se conectar ao banco de dados MySQL/MariaDB a partir de outro servidor, diversos fatores podem ser a causa. As seguintes sugestões de solução podem ajudar a resolver o problema:

### Solução 1: verificar usuário e permissões

Se você tiver problemas para se conectar a um banco de dados MySQL/MariaDB em outro servidor, verifique primeiro o seguinte:

- Você está usando o nome de usuário e a senha corretos do MySQL/MariaDB?
- Este usuário configurou o local correto?

MySQL e MariaDB permitem, por padrão, que um usuário faça login apenas a partir do host especificado durante a criação. Por exemplo, se seu usuário foi criado assim:

```none
CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost'; 
FLUSH PRIVILEGES;
```

então o login funcionará apenas no mesmo servidor em que o banco de dados está sendo executado (`localhost`). Um script em outro servidor deve ter um usuário criado para o endereço IP remoto ou `%` (todos os hosts).

### Solução 2: teste de conexão via linha de comando

Antes de verificar o script PHP, você deve testar a conexão diretamente via MySQL-CLI. No servidor em que o script está sendo executado, use:

```none
mysql -u [nome_de_usuário] -h [endereço_IP_do_servidor_host] -p
```

Para, por exemplo, estabelecer uma conexão com um banco de dados em 192.168.0.2 usando o nome de usuário phpuser2, o comando é:

```none
mysql -u phpuser2 -h 192.168.0.2 -p
```

Se a conexão funcionar, você será registrado no cliente MySQL/MariaDB no servidor remoto por meio deste comando.

### Solução 3: firewall

Você deve se certificar de que todas as regras de firewall relevantes foram atualizadas para permitir o tráfego TCP/UDP na porta 3306 para o servidor de banco de dados. Você também deve levar em consideração de que todos os servidores na nuvem são afetados pela política de firewall padrão, controlada pelo Cloud Panel.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/conectar-banco-de-dados-mariadb-mysql-com-linux/](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/conectar-banco-de-dados-mariadb-mysql-com-linux/) for AI/LLM consumption.