Guia de Gerenciamento de Usuários do MariaDB: Como Criar Usuários, Conceder Privilégios e Corrigir Erros Comuns

目次

Introdução

1.1 Você Quer Aprender a Criar Usuários no MariaDB?

Já quis criar um novo usuário no MariaDB e configurar os privilégios adequados?
Por exemplo, você pode ter se deparado com as seguintes situações:

  • Executou CREATE USER mas não consegue fazer login
  • Concedeu privilégios usando GRANT, mas eles não foram aplicados
  • Não tem certeza de como configurar permissões corretas em um ambiente de produção
  • Quer excluir com segurança usuários desnecessários

Se você está enfrentando esses problemas, este artigo ajudará você a entender completamente todo o processo, desde a criação de usuários até o gerenciamento de privilégios e a exclusão de usuários no MariaDB.

1.2 O Que Você Vai Aprender Neste Artigo

Este artigo fornece uma explicação detalhada dos seguintes aspectos do gerenciamento de usuários no MariaDB:

  • Como criar e excluir usuários no MariaDB
  • Como conceder e gerenciar privilégios (melhores práticas para configurações corretas de permissão)
  • Erros comuns e como resolvê‑los
  • Melhores práticas operacionais para ambientes de desenvolvimento e produção

Todos os tópicos são explicados com exemplos de SQL amigáveis para iniciantes, permitindo que você aprenda e pratique ao mesmo tempo.

1.3 Público‑Alvo

Este artigo destina‑se a:

  • Iniciantes: quem está aprendendo a gerenciar usuários no MariaDB pela primeira vez
  • Engenheiros: quem deseja configurar permissões corretas em ambientes de desenvolvimento
  • Administradores de Banco de Dados: quem busca reforçar a segurança em ambientes de produção

Mesmo que você seja novo no MariaDB, este guia fornece informações práticas que você pode aplicar com confiança em operações reais.

Criando Usuários no MariaDB

2.1 Comando Básico de Criação de Usuário

No MariaDB, você cria um novo usuário usando o comando CREATE USER.
É possível especificar nome de usuário e senha com a seguinte sintaxe:

CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

Por exemplo, para criar um usuário chamado yamada em localhost com a senha password123:

CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';

Após executar este comando, o usuário yamada será criado e poderá fazer login apenas a partir do localhost (login permitido somente no próprio servidor).

2.2 Exemplos de Criação de Usuário por Caso de Uso

Ao criar usuários no MariaDB, você pode especificar de onde as conexões são permitidas usando o campo hostname.
É importante configurar as definições adequadamente de acordo com o seu caso de uso.

CaseCommand ExampleDescription
Local Environment (Development)CREATE USER 'dev_user'@'localhost' IDENTIFIED BY 'password';User dedicated to development environment
Allow Remote ConnectionsCREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';Allow connections from any host (security caution required)
Allow Connection from Specific IPCREATE USER 'admin'@'192.168.1.100' IDENTIFIED BY 'password';Restrict access to a specific IP address only
Allow Connection from Specific SubnetCREATE USER 'network_user'@'192.168.1.%' IDENTIFIED BY 'password';Allow only machines with IP addresses in the 192.168.1.x range

Usar '%' permite conexões de todos os hosts, mas
isso representa riscos de segurança significativos e não é recomendado para ambientes de produção.
Em produção, o ideal é especificar endereços IP ou configurar o acesso por meio de uma VPN.

2.3 Observações Importantes ao Criar Usuários

Existem várias considerações importantes ao criar usuários.

(1) Verificar Usuários Existentes

Antes de criar um usuário, é importante confirmar que o mesmo usuário ainda não existe.
Você pode listar os usuários registrados atualmente com o seguinte comando:

SELECT user, host FROM mysql.user;

Saída de exemplo:

+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | localhost |
| yamada  | localhost |
+---------+-----------+

Se já existir um usuário com o mesmo username@hostname, a execução de CREATE USER resultará em erro.

(2) O Que Fazer se o Usuário Já Existir

No MariaDB, não é possível sobrescrever um usuário existente recriando‑o.
Se o mesmo usuário já existir, use uma das abordagens a seguir:

  • Alterar a senha do usuário existente
    ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
    
  • Excluir o usuário desnecessário e criar um novo
    DROP USER 'yamada'@'localhost';
    CREATE USER 'yamada'@'localhost' IDENTIFIED BY 'password123';
    

Gerenciando Privilégios no MariaDB

3.1 Conceder Privilégios

Sintaxe Básica

No MariaDB, você pode conceder privilégios a um usuário usando o comando GRANT.

GRANT privilege ON database_name.table_name TO 'username'@'hostname';

Por exemplo, para conceder todos os privilégios no test_db ao usuário yamada:

GRANT ALL PRIVILEGES ON test_db.* TO 'yamada'@'localhost';

Significado deste comando:

  • ALL PRIVILEGES : Concede todos os privilégios
  • test_db.* : Aplica-se a todas as tabelas no banco de dados test_db
  • 'yamada'@'localhost' : Aplica-se ao usuário yamada que se conecta a partir do localhost

3.2 Privilégios Mais Usados

No MariaDB, você pode conceder privilégios como os seguintes:

PrivilegeDescription
ALL PRIVILEGESGrant all privileges
SELECTRead data
INSERTInsert data
UPDATEUpdate data
DELETEDelete data
CREATECreate new tables or databases
DROPDrop databases or tables
GRANT OPTIONGrant privileges to other users
ALTERModify table structure
EXECUTEExecute stored procedures or functions
RELOADReload server settings

Se você deseja permitir apenas operações específicas, é recomendado conceder privilégios individualmente em vez de conceder tudo.

3.3 Configurações de Privilégios por Caso de Uso

É importante atribuir os privilégios corretos para cada situação.

SituationRecommended PrivilegesCommand Example
WordPress OperatorSELECT, INSERT, UPDATE, DELETEGRANT SELECT, INSERT, UPDATE, DELETE ON wp_db.* TO 'wp_user'@'localhost';
Developer (Development Environment)ALL PRIVILEGESGRANT ALL PRIVILEGES ON dev_db.* TO 'dev_user'@'%';
Read-Only UserSELECT onlyGRANT SELECT ON analytics_db.* TO 'readonly'@'localhost';
Database Administrator (Production Environment)ALL PRIVILEGES (restricted)GRANT ALL PRIVILEGES ON production_db.* TO 'admin'@'localhost';

Em ambientes de produção, evite conceder ALL PRIVILEGES com muita facilidade.

3.4 Verificar Privilégios Concedidos

Para verificar os privilégios concedidos, use o comando SHOW GRANTS.

SHOW GRANTS FOR 'username'@'hostname';

Por exemplo, para verificar os privilégios do usuário yamada:

SHOW GRANTS FOR 'yamada'@'localhost';

Exemplo de saída:

+-----------------------------------------------------------------------------------+
| Grants for yamada@localhost                                                       |
+-----------------------------------------------------------------------------------+
| GRANT SELECT, INSERT, UPDATE ON test_db.* TO 'yamada'@'localhost'                |
+-----------------------------------------------------------------------------------+

Isto mostra os privilégios atualmente concedidos ao usuário.

3.5 Revogar Privilégios (Remover Permissões)

Para revogar privilégios específicos de um usuário, use o comando REVOKE.

Sintaxe Básica

REVOKE privilege ON database_name.table_name FROM 'username'@'hostname';

Por exemplo, para revogar o privilégio UPDATE do usuário yamada:

REVOKE UPDATE ON test_db.* FROM 'yamada'@'localhost';

Revogar Todos os Privilégios

REVOKE ALL PRIVILEGES ON *.* FROM 'yamada'@'localhost';

3.6 O que Fazer Quando Alterações de Privilégios Não Têm Efeito

No MariaDB, alterações de privilégios podem não ser aplicadas imediatamente. Se isso acontecer, execute o seguinte comando:

FLUSH PRIVILEGES;

Executar este comando força o MariaDB a recarregar as tabelas de privilégios para que suas alterações tenham efeito imediatamente.

Excluindo Usuários no MariaDB

4.1 Excluir um Usuário

Para excluir um usuário do MariaDB, use o comando DROP USER.

Sintaxe Básica

DROP USER 'username'@'hostname';

Por exemplo, para excluir o usuário yamada do localhost:

DROP USER 'yamada'@'localhost';

Após executar este comando, o usuário yamada será completamente removido do sistema MariaDB.

4.2 O Que Verificar Antes de Excluir um Usuário

Antes de excluir um usuário, há algumas verificações importantes que você deve realizar.
Tenha cuidado para não excluir usuários necessários por engano.

(1) Verificar se o Usuário Alvo Existe

No MariaDB, tentar excluir um usuário inexistente causará um erro.
Execute o comando a seguir para confirmar que o usuário alvo existe:

SELECT user, host FROM mysql.user;

Exemplo de saída:

+---------+-----------+
| user    | host      |
+---------+-----------+
| root    | localhost |
| yamada  | localhost |
| admin   | 192.168.1.100 |
+---------+-----------+

Se o usuário yamada aparecer nesta lista, o usuário pode ser excluído.

(2) Verificar se o Usuário Está Conectado no Momento

No MariaDB, se o usuário que você está excluindo possui uma sessão ativa,
a exclusão pode não ter efeito imediatamente para essa sessão.
Verifique se o usuário está ativo usando o comando a seguir:

SELECT user, host FROM information_schema.processlist;

Exemplo de saída:

+---------+-----------+
| user    | host      |
+---------+-----------+
| yamada  | localhost |
| root    | localhost |
+---------+-----------+

Neste exemplo, o usuário yamada está atualmente ativo, portanto você deve encerrar a sessão antes da exclusão.

(3) Encerrar Forçadamente uma Sessão

Você pode encerrar forçadamente uma sessão específica usando o comando KILL.

  1. Primeiro, verifique o ID do processo (a coluna ID):
    SELECT id, user, host FROM information_schema.processlist;
    

Exemplo de saída:

+----+---------+-----------+
| id | user    | host      |
+----+---------+-----------+
| 10 | yamada  | localhost |
| 11 | root    | localhost |
+----+---------+-----------+
  1. Se yamada tem o ID de processo 10, encerre-a com:
    KILL 10;
    

4.3 Limpeza Pós-Exclusão

Após excluir um usuário, informações residuais de privilégios podem permanecer no banco de dados.
Nesses casos, execute FLUSH PRIVILEGES para atualizar as tabelas de privilégios.

FLUSH PRIVILEGES;

Executar isso garante que as informações do usuário excluído sejam totalmente removidas do sistema de banco de dados.

4.4 Notas Importantes ao Excluir Usuários

Mantenha os seguintes pontos em mente ao excluir usuários:

  1. Usuários excluídos não podem ser restaurados
  • Uma vez que você execute DROP USER, o usuário excluído não pode ser recuperado .
  • Se for excluído por engano, você deve recriar o usuário usando CREATE USER .
  1. Privilégios podem precisar ser transferidos
  • Se o usuário excluído era responsável por operações críticas do banco de dados, você deve transferir os privilégios necessários para outro usuário adequado antecipadamente.
  1. Tenha cuidado em ambientes de produção
  • Em ambientes de produção, a exclusão repentina pode causar indisponibilidade do sistema ou erros.
  • É altamente recomendado analisar o impacto com antecedência e criar um backup .

Erros Comuns e Soluções (FAQ)

Ao gerenciar usuários no MariaDB, você pode encontrar vários erros.
Esta seção explica os erros mais comuns, suas causas e como resolvê-los.

5.1 FAQ para Iniciantes

Q1: Qual é a diferença entre o gerenciamento de usuários do MariaDB e do MySQL?

MariaDB e MySQL geralmente usam a mesma sintaxe, mas há algumas diferenças de recursos.

Comparison ItemMySQLMariaDB
CREATE USERSupportedSupported
SHOW GRANTS FORSupportedSupported
DROP USERSupportedSupported
CREATE ROLEMySQL 8.0 and laterMariaDB 10.0 and later

MariaDB suporta CREATE ROLE, permitindo o gerenciamento de usuários baseado em papéis.

Q2: Qual é a diferença entre localhost e %?

No gerenciamento de usuários do MariaDB, especificar o nome do host é crítico.

  • localhost : Permite conexões apenas da máquina local
  • % : Permite conexões de qualquer host (risco de segurança)
  • 192.168.1.100 : Permite conexões apenas de um endereço IP específico
  • 192.168.1.% : Permite conexões apenas de uma sub-rede específica (192.168.1.*)

5.2 Solução de Problemas

Q3: Como corrigir “ERROR 1396 (HY000): Operação CREATE USER falhou”

Causa: O usuário especificado já existe, portanto um novo usuário não pode ser criado.

Solução: Verifique se o usuário existe e exclua ou modifique-o se necessário.

  1. Verificar usuários existentes
    SELECT user, host FROM mysql.user WHERE user='yamada';
    
  1. Excluir se desnecessário
    DROP USER 'yamada'@'localhost';
    
  1. Alterar a senha em vez disso
    ALTER USER 'yamada'@'localhost' IDENTIFIED BY 'newpassword123';
    

Q4: Privilégios concedidos com GRANT não são aplicados

Causa: O cache de privilégios do MariaDB não foi atualizado.

Solução: Execute FLUSH PRIVILEGES para recarregar os privilégios.

FLUSH PRIVILEGES;

Q5: Não é possível conectar remotamente mesmo usando %

Causa: Conexões remotas podem estar restritas no arquivo de configuração do MariaDB.

Solução:

  1. Edite o arquivo de configuração /etc/mysql/my.cnf (ou /etc/mysql/mariadb.conf.d/50-server.cnf) e altere o valor de bind-address para 0.0.0.0 .
    bind-address = 0.0.0.0
    
  1. Reinicie o MariaDB
    sudo systemctl restart mariadb
    
  1. Use % no comando GRANT para permitir conexões
    GRANT ALL PRIVILEGES ON test_db.* TO 'remote_user'@'%' IDENTIFIED BY 'password';
    

Q6: Obtendo o Erro “Access denied for user ‘user’@’host’”

Causa: O usuário não tem privilégios adequados, ou a senha está incorreta.

Solução:

  1. Verificar privilégios atuais
    SHOW GRANTS FOR 'user'@'host';
    
  1. Conceder privilégios apropriados
    GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'host';
    
  1. Verificar se você está fazendo login com a senha correta
    mysql -u user -p
    

Conclusão

A gestão de usuários do MariaDB é essencial para melhorar a segurança do banco de dados e a eficiência operacional. Neste artigo, abordamos em detalhes criação de usuários, gerenciamento de privilégios, exclusão de usuários e erros comuns com suas soluções.

6.1 Recapitulação

① Criando Usuários no MariaDB

  • Crie novos usuários usando o comando CREATE USER
  • Restrinja o acesso usando @'hostname'
  • Sempre verifique os usuários existentes antes de criar novos

② Gerenciando Privilégios no MariaDB

  • Use GRANT para atribuir os privilégios mínimos necessários
  • Use SHOW GRANTS para verificar os privilégios atuais
  • Use REVOKE para remover privilégios desnecessários
  • Aplique as mudanças com FLUSH PRIVILEGES

③ Excluindo Usuários no MariaDB

  • Exclua usuários usando o comando DROP USER
  • Verifique sessões ativas antes da exclusão
  • Limpe o cache de privilégios usando FLUSH PRIVILEGES

④ Erros Comuns e Soluções

  • ERROR 1396 (HY000)Verifique usuários existentes e exclua se necessário
  • Alterações de privilégios não aplicadas → Execute FLUSH PRIVILEGES
  • Access denied for userVerifique privilégios e senha
  • Não é possível conectar remotamente com %Ajuste a configuração bind-address

6.2 Melhores Práticas para Gerenciamento de Usuários do MariaDB

  • Conceda apenas os privilégios mínimos necessários
  • Evite conceder ALL PRIVILEGES de forma casual
  • Restrinja usuários de produção a SELECT, INSERT, UPDATE, DELETE sempre que possível
  • Sempre verifique as mudanças de privilégios
  • Use SHOW GRANTS para confirmar que as configurações estão corretas
  • Analise o impacto antes de excluir usuários
  • Seja cauteloso em produção e crie backups
  • Implemente práticas de segurança robustas
  • Aplique restrições de IP para conexões remotas
  • Defina uma senha forte para o usuário root
  • Remova regularmente usuários e privilégios desnecessários

6.3 Considerações Finais

Por meio deste guia, você aprendeu tudo, desde o básico até técnicas avançadas de gerenciamento de usuários do MariaDB. Use esse conhecimento para alcançar uma administração de banco de dados segura e eficiente.

Continuaremos a compartilhar insights úteis sobre MariaDB, então fique atento! 🚀