17. Configuração de um servidor de banco de dados seguro no Ubuntu: MySQL vs. MariaDB

Configurar um servidor de banco de dados seguro no Ubuntu é uma base fundamental para criar aplicações escaláveis e confiáveis. Quer você esteja implantando aplicações web dinâmicas ou gerenciando cargas de trabalho empresariais complexas, escolher a solução de banco de dados certa é essencial. MySQL e MariaDB são dois dos sistemas de banco de dados de código aberto mais populares, conhecidos por seu desempenho, flexibilidade e confiabilidade.

Neste guia, orientaremos você no processo de instalação, configuração e proteção do MySQL e do MariaDB em um servidor Ubuntu. Além disso, compararemos seus recursos para ajudá-lo a determinar a melhor opção para seu caso de uso específico. Com essa abordagem passo a passo, você estará preparado para configurar um ambiente de banco de dados seguro e robusto para suas aplicações.


Artigos anteriores:

01. Introdução ao Ubuntu Server – SysOSX: AI & Cloud

02. Como configurar seu primeiro servidor Ubuntu: guia para iniciantes – SysOSX: AI & Cloud

03. Dominando a linha de comando do Linux para Ubuntu Server – SysOSX: AI & Cloud

04. Gerenciamento de usuários e permissões no Ubuntu Server: guia completo – SysOSX: AI & Cloud

05. Noções básicas de rede para Ubuntu Server: guia completo – SysOSX: AI & Cloud

06. Instalação e gerenciamento de software no Ubuntu Server: guia completo – SysOSX: AI & Cloud

07.Aplicação de patches e atualização do Ubuntu Server: guia completo – SysOSX: AI & Cloud

08. Protegendo seu servidor Ubuntu: etapas práticas de reforço e proteção – SysOSX: AI & Cloud

09. Auditoria e registro de logs no servidor Ubuntu

10. Ferramentas de monitoramento de sistema para Ubuntu Server: guia completo – SysOSX: AI & Cloud

11. Registro centralizado para o servidor Ubuntu: um guia de leitura obrigatória – SysOSX: AI & Cloud

12. Auditoria e conformidade para Ubuntu Server: melhores práticas – SysOSX: AI & Cloud

13. Configuração do seu servidor Ubuntu para hospedagem e aplicações web: guia definitivo – SysOSX: AI & Cloud

14. Hospedar vários sites em um único servidor Ubuntu: dicas úteis – SysOSX: AI & Cloud

15. Gerenciamento de armazenamento e discos no Ubuntu Server: guia simples – SysOSX: AI & Cloud

16. Configuração de serviços de compartilhamento de arquivos no Ubuntu Server: guia completo – SysOSX: AI & Cloud



Pré-requisitos

Antes de começar, verifique o seguinte:

  • Ubuntu Server: Uma instância do Ubuntu em execução (recomenda-se a versão 20.04 ou posterior).
  • Acesso administrativo: Você precisará de sudo privilégios para instalar e configurar o servidor de banco de dados.
  • Conexão com a internet: Necessária para baixar pacotes e atualizações.

MySQL vs. MariaDB: principais diferenças

Embora MySQL e MariaDB compartilhem as mesmas raízes, eles divergiram nos últimos anos para oferecer recursos distintos. Esta comparação ajudará você a escolher o servidor de banco de dados certo para suas necessidades:

RecursoMySQLMariaDB
LicençaLicença dupla (GPL e proprietária)Código aberto (GPL)
DesempenhoOtimizado para cargas de trabalho com muitas leiturasDesempenho melhorado para cargas de trabalho de leitura e escrita
Mecanismo de armazenamento padrãoInnoDBAria (alternativa ao InnoDB)
RecursosRecursos empresariais disponíveis nas versões pagasMuitos recursos (por exemplo, pool de threads, funções JSON) são de código aberto
CompatibilidadeAmplamente usado e suportado pelas principais plataformasCompatível com o MySQL, mas pode não suportar alguns recursos proprietários do MySQL
ReplicaçãoReplicação tradicionalReplicação aprimorada com suporte ao Galera Cluster
Suporte da comunidadeGrande comunidade e opções de suporte empresarialForte suporte da comunidade de código aberto

Recomendação:

  • Escolha MySQL se você precisa de recursos de nível empresarial e compatibilidade com ferramentas proprietárias.
  • Opte por MariaDB se você prefere software de código aberto com recursos e desempenho aprimorados.

Instalação do MySQL ou MariaDB

Etapa 1: Atualizar o repositório de pacotes

Atualize seu sistema para garantir que você esteja trabalhando com as versões mais recentes dos pacotes:

sudo apt update && sudo apt upgrade

Etapa 2: Instalar o MySQL ou MariaDB

Você pode instalar o MySQL ou o MariaDB, dependendo da sua preferência.

Instalação do MySQL:

sudo apt install mysql-server

Instalação do MariaDB:

sudo apt install mariadb-server

Etapa 3: Verificar a instalação

Após a instalação, verifique se o servidor de banco de dados está em execução:

Para o MySQL:

sudo systemctl status mysql

Para o MariaDB:

sudo systemctl status mariadb


Configuração do servidor de banco de dados

Etapa 1: Configuração básica

Edite o arquivo de configuração para otimizar o desempenho e a segurança.

Para o MySQL:

sudo nano /etc/mysql/my.cnf

Para o MariaDB:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Principais configurações a ajustar:

  • bind-address: Defina-o como 0.0.0.0 se você quiser acesso remoto.
  • max_connections: Aumente este valor para aplicações de alto tráfego.

Após fazer as alterações, reinicie o serviço:

sudo systemctl restart mysql   # For MySQL
sudo systemctl restart mariadb # For MariaDB

Etapa 2: Testar o servidor de banco de dados

Faça login no servidor de banco de dados para garantir que ele esteja funcionando:

mysql -u root -p


Proteção do seu servidor de banco de dados

Etapa 1: Executar o script de segurança

Use o script de segurança integrado para reforçar seu servidor de banco de dados.

sudo mysql_secure_installation

Siga as instruções para:

  • Definir uma senha forte para o root.
  • Remover usuários anônimos.
  • Desabilitar o login remoto do root.
  • Remover bancos de dados de teste.

Etapa 2: Configurar regras de firewall

Restrinja o acesso ao servidor de banco de dados usando ufw:

sudo ufw allow from <your-ip-address> to any port 3306

Substitua <your-ip-address> pelo endereço IP que requer acesso.

Etapa 3: Habilitar SSL/TLS

Para maior segurança, habilite as conexões SSL/TLS. Consulte documentação do MySQL ou documentação do MariaDB para obter instruções de configuração.

(Exemplo para o MySQL)

  1. Gere os certificados:
sudo mysql_ssl_rsa_setup --uid=mysql  
  1. Habilite na configuração:
[mysqld]  
ssl-ca = /var/lib/mysql/ca.pem  
ssl-cert = /var/lib/mysql/server-cert.pem  
ssl-key = /var/lib/mysql/server-key.pem  

Etapa 4: Instalar o Fail2Ban (opcional)

sudo apt install fail2ban  

Configure as regras de jail para MySQL/MariaDB em /etc/fail2ban/jail.local.


Gerenciamento do seu servidor de banco de dados

Etapa 1: Criar um banco de dados

Crie um banco de dados para sua aplicação:

CREATE DATABASE my_application_db;

Etapa 2: Criar um usuário e conceder privilégios

Crie um usuário e atribua privilégios:

CREATE USER 'app_user'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON my_application_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;

Etapa 3: Monitorar o desempenho

# Analyze slow queries  
sudo mysqldumpslow -s t /var/log/mysql/mysql-slow.log  

# Use MySQLTuner  
wget https://mysqltuner.pl -O mysqltuner.pl  
perl mysqltuner.pl  

Etapa 4: Backup e restauração

Backups regulares são essenciais para a segurança dos dados.

Backup:

mysqldump -u root -p my_application_db > my_application_db.sql

Restauração:

mysql -u root -p my_application_db < my_application_db.sql

Backups automatizados (tarefa cron)

# Daily backup at 2 AM  
0 2 * * * /usr/bin/mysqldump -u root -p PASSWORD app_db > /backups/app_db_$(date +\%F).sql  

Conclusão

Tanto o MySQL quanto o MariaDB são excelentes opções para configurar um servidor de banco de dados no Ubuntu. Enquanto o MySQL é conhecido por seus recursos de nível empresarial, o MariaDB se destaca por sua abordagem de código aberto e melhorias de desempenho. Ao seguir este guia, você poderá instalar, configurar, proteger e gerenciar seu servidor de banco de dados com eficácia.

Em breve:
Em nosso próximo guia, “Dominando o LVM no Ubuntu: armazenamento flexível para servidores de banco de dados”, você aprenderá a:

  • Criar e gerenciar volumes lógicos para armazenamento dinâmico de banco de dados.
  • Redimensionar discos sem tempo de inatividade.
  • Implementar snapshots para backups consistentes.

Não perca: siga nosso blog para se manter atualizado!

Deixe um comentário