Para uma melhor experiência com caixas de código, experimente ver o site em um Desktop.
O MariaDB é um sistema de gerenciamento de banco de dados relacional (RDBMS) de código aberto, usado por muitas aplicações web e ferramentas de infraestrutura. Neste tutorial, você vai aprender a acessar o MariaDB, gerenciar usuários, bancos de dados e tabelas, encontrar os arquivos de configuração, verificar o serviço, fazer backup e restore e exportar tabelas.
Os comandos foram escritos para o MariaDB 10.11 ou mais recente e funcionam tanto no Debian quanto no Rocky Linux e no Oracle Linux. A maior parte é igual nas duas famílias; quando houver diferença, ela aparece indicada no texto.
Se o MariaDB ainda não estiver instalado, instale o pacote do servidor. No Debian o serviço já inicia sozinho; no Rocky Linux e no Oracle Linux é preciso habilitá-lo:
# Debian
sudo apt install mariadb-server
# Rocky Linux / Oracle Linux
sudo dnf install mariadb-server
sudo systemctl enable --now mariadb
Logo depois da instalação, vale rodar o assistente de segurança. Ele remove usuários anônimos e o banco de testes:
sudo mariadb-secure-installation
Nas versões atuais, o usuário root do MariaDB entra pelo usuário root do sistema, sem senha. Para abrir o prompt como administrador:
sudo mariadb
Para entrar com outro usuário do MariaDB, informe o nome e digite a senha quando ela for pedida:
mariadb -u nome_do_usuario -p
O prompt muda para MariaDB [(none)]>, sinal de que você está conectado. Os comandos SQL terminam com ponto e vírgula (;) e, para sair, digite exit.
Em guias mais antigos você vai encontrar o comando mysql. Ele ainda funciona como atalho, mas o nome atual da ferramenta é mariadb.
Os comandos desta seção e das próximas são executados dentro do prompt do MariaDB (sudo mariadb). Troque os nomes entre aspas pelos que você quiser usar.
Criar um usuário
CREATE USER 'nome_do_usuario'@'localhost' IDENTIFIED BY 'senha';
O 'localhost' indica que o usuário só pode se conectar a partir do próprio servidor. Para permitir o acesso de outra máquina, troque por um endereço IP ou por '%' (qualquer origem).
Dar permissões
Um usuário novo não tem acesso a nada até receber permissões. Dê apenas o necessário; no exemplo abaixo, ele recebe acesso total a um único banco:
GRANT ALL PRIVILEGES ON nome_do_banco.* TO 'nome_do_usuario'@'localhost';
SHOW GRANTS FOR 'nome_do_usuario'@'localhost';
Remover permissões
Para tirar uma permissão, use o REVOKE com a mesma estrutura do GRANT:
REVOKE ALL PRIVILEGES ON nome_do_banco.* FROM 'nome_do_usuario'@'localhost';
Alterar a senha
ALTER USER 'nome_do_usuario'@'localhost' IDENTIFIED BY 'nova_senha';
Listar os usuários
SELECT User, Host FROM mysql.user;
Deletar um usuário
DROP USER 'nome_do_usuario'@'localhost';
Com CREATE USER, GRANT, ALTER USER e DROP USER, as alterações valem na hora. O FLUSH PRIVILEGES, comum em guias antigos, só é necessário quando alguém altera as tabelas de usuários diretamente.
Criar um banco de dados
CREATE DATABASE nome_do_banco CHARACTER SET utf8mb4;
O utf8mb4 garante que acentos e outros caracteres especiais sejam gravados corretamente.
Listar os bancos de dados
SHOW DATABASES;
Renomear um banco de dados
O MariaDB não tem um comando para renomear um banco de dados. O caminho é criar o banco novo e mover as tabelas para ele, uma por uma:
CREATE DATABASE novo_nome_do_banco CHARACTER SET utf8mb4;
RENAME TABLE nome_do_banco.nome_da_tabela TO novo_nome_do_banco.nome_da_tabela;
Repita o RENAME TABLE para cada tabela (SHOW TABLES FROM nome_do_banco; mostra a lista). As permissões dadas ao banco antigo não passam para o novo, então repita o GRANT. Se o banco tiver views, procedures ou triggers, use o backup e restore (mais abaixo) para criar a cópia com o novo nome.
Deletar um banco de dados
DROP DATABASE nome_do_banco;
Atenção: o DROP DATABASE não pede confirmação e não tem lixeira. Faça um backup antes.
Selecionar o banco de dados
Antes de trabalhar com tabelas, escolha o banco em que elas ficam:
USE nome_do_banco;
Criar uma tabela
Cada coluna tem um nome e um tipo de dado. No exemplo, uma tabela simples de clientes:
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100) NOT NULL,
email VARCHAR(150)
);
Listar as tabelas e ver a estrutura
SHOW TABLES;
DESCRIBE clientes;
Modificar uma tabela
Para adicionar uma coluna:
ALTER TABLE clientes ADD telefone VARCHAR(20);
Deletar uma tabela
DROP TABLE clientes;
Assim como o DROP DATABASE, o DROP TABLE apaga a tabela e todos os dados dela sem pedir confirmação.
Com a tabela clientes criada, estes são os quatro comandos básicos para trabalhar com os dados.
Inserir dados
INSERT INTO clientes (nome, email) VALUES
('Maria Silva', 'maria@example.com'),
('João Souza', 'joao@example.com');
A coluna id não precisa ser informada: o AUTO_INCREMENT gera o número sozinho.
Consultar dados
SELECT * FROM clientes;
SELECT nome, email FROM clientes WHERE nome LIKE 'Maria%';
Atualizar dados
UPDATE clientes SET email = 'maria.silva@example.com' WHERE id = 1;
Deletar dados
DELETE FROM clientes WHERE id = 2;
Atenção: sem o WHERE, o UPDATE e o DELETE afetam todas as linhas da tabela. Antes de rodar, teste o mesmo WHERE com um SELECT para ver quais linhas serão alteradas.
As configurações do MariaDB ficam em arquivos .cnf. O arquivo principal só carrega os outros; as configurações do servidor ficam em um arquivo separado, cujo local muda conforme a distribuição:
# Debian
/etc/mysql/my.cnf (arquivo principal)
/etc/mysql/mariadb.conf.d/50-server.cnf (configurações do servidor)
# Rocky Linux / Oracle Linux
/etc/my.cnf (arquivo principal)
/etc/my.cnf.d/mariadb-server.cnf (configurações do servidor)
Altere as configurações do servidor na seção [mysqld] do arquivo indicado. Nos posts desta série, todo bloco de configuração começa com o caminho do arquivo, para você conferir se está editando o arquivo certo. Por exemplo:
# Debian: /etc/mysql/mariadb.conf.d/50-server.cnf
# Rocky Linux / Oracle Linux: /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
bind-address = 127.0.0.1
Antes de mexer, faça uma cópia do arquivo original e, depois de alterar, reinicie o serviço para aplicar:
sudo systemctl restart mariadb
Para conferir qual valor o servidor está usando de fato, consulte a variável dentro do prompt do MariaDB. Por exemplo, para ver onde ficam os dados:
SHOW VARIABLES LIKE 'datadir';
Os comandos desta seção rodam no terminal do Linux, fora do prompt do MariaDB. Para ver se o serviço está rodando:
sudo systemctl status mariadb
A linha Active: active (running) indica que o serviço está no ar, e enabled indica que ele inicia junto com o sistema. Se estiver parado ou desabilitado:
sudo systemctl enable --now mariadb
Para conferir a versão instalada:
mariadb --version
Para confirmar que o servidor está aceitando conexões na porta padrão (3306):
sudo ss -tlnp | grep 3306
No Debian, o padrão é 127.0.0.1:3306: o MariaDB só aceita conexões do próprio servidor. No Rocky Linux e no Oracle Linux, ele costuma escutar em todas as interfaces, mas o firewall bloqueia a porta até que ela seja liberada. O acesso remoto será o assunto do próximo post da série.
Se o serviço não subir, o log mostra o motivo:
# Debian
sudo journalctl -u mariadb -n 50
# Rocky Linux / Oracle Linux
sudo tail -n 50 /var/log/mariadb/mariadb.log
A ferramenta mariadb-dump gera um arquivo .sql com os comandos para recriar os bancos e os dados. Ela roda no terminal do Linux, fora do prompt do MariaDB.
Backup de um banco
sudo mariadb-dump --single-transaction --routines nome_do_banco > nome_do_banco.sql
O --single-transaction faz uma cópia consistente sem travar as tabelas (vale para tabelas InnoDB, o padrão do MariaDB), e o --routines inclui procedures e functions. Os triggers já entram por padrão.
Backup de todos os bancos
sudo mariadb-dump --single-transaction --routines --all-databases > todos_os_bancos.sql
Backup compactado
Para economizar espaço, compacte o arquivo durante o backup. A data entra no nome automaticamente:
sudo mariadb-dump --single-transaction --routines nome_do_banco | gzip > nome_do_banco_$(date +%F).sql.gz
Restore
O banco de destino precisa existir antes do restore. Crie-o, se necessário, e importe o arquivo:
sudo mariadb -e "CREATE DATABASE IF NOT EXISTS nome_do_banco CHARACTER SET utf8mb4;"
sudo mariadb nome_do_banco < nome_do_banco.sql
# A partir de um backup compactado
gunzip < nome_do_banco_2026-10-30.sql.gz | sudo mariadb nome_do_banco
Um backup feito com --all-databases já contém a criação dos bancos. Para restaurá-lo, use apenas sudo mariadb < todos_os_bancos.sql.
Agendar o backup
Um backup só é confiável se rodar sozinho. Um jeito simples é o cron do root. Primeiro, crie uma pasta protegida para os arquivos:
sudo mkdir -p /var/backups/mariadb
sudo chmod 700 /var/backups/mariadb
Depois, abra o agendador com sudo crontab -e e adicione a linha abaixo, que faz o backup de todos os bancos todos os dias às 2h:
0 2 * * * mariadb-dump --single-transaction --routines --all-databases | gzip > /var/backups/mariadb/todos_$(date +\%F).sql.gz
No cron, o % precisa da barra antes (\%). Essa linha guarda um arquivo por dia, então acompanhe o espaço em disco e apague os mais antigos de tempos em tempos. Guarde também uma cópia fora do servidor, como em um NAS, e teste o restore de vez em quando: backup que nunca foi testado não é garantia.
Exportar uma tabela em .sql
O mariadb-dump também aceita o nome de uma ou mais tabelas depois do nome do banco:
sudo mariadb-dump nome_do_banco clientes > clientes.sql
Para restaurar só essa tabela, use sudo mariadb nome_do_banco < clientes.sql. Atenção: o arquivo apaga e recria a tabela no destino.
Exportar para abrir em uma planilha
O jeito mais simples é rodar a consulta pelo terminal e gravar o resultado em um arquivo. O resultado sai separado por tabulação (TSV), formato que o Excel e o LibreOffice abrem normalmente:
sudo mariadb -B -e "SELECT * FROM clientes;" nome_do_banco > clientes.tsv
O arquivo é criado pelo seu usuário, na pasta em que você está, sem precisar mexer em permissões do servidor.
Exportar em CSV pelo próprio servidor
O MariaDB também grava um CSV direto com SELECT ... INTO OUTFILE. Quem cria o arquivo é o serviço, então o exemplo usa a pasta de dados, onde ele já tem permissão de gravação (inclusive com o SELinux ativo no Rocky Linux e no Oracle Linux):
SELECT * FROM clientes
INTO OUTFILE '/var/lib/mysql/clientes.csv'
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
Depois, mova o arquivo para a sua pasta e ajuste o dono:
sudo mv /var/lib/mysql/clientes.csv ~/
sudo chown $USER: ~/clientes.csv
O arquivo de destino não pode existir antes do comando. Se aparecer um erro citando secure_file_priv, o servidor só permite gravar em uma pasta específica; veja qual com SHOW VARIABLES LIKE 'secure_file_priv'; e use esse caminho.
Com esses comandos você já instala o MariaDB, cria usuários e bancos, trabalha com tabelas e dados, verifica o serviço e mantém backups, tanto no Debian quanto no Rocky Linux e no Oracle Linux. No próximo post da série, vamos abrir o MariaDB para a rede com segurança: acesso remoto, firewall, permissões mais finas e conexões criptografadas.
Esta série tem três posts. Se você está começando, siga na ordem:
Gerenciamento básico do MariaDB (você está aqui)