15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
01.11.2024

Como Criar um Novo Usuário e Definir Permissões no MySQL

MySQL continua sendo um dos sistemas de gerenciamento de banco de dados relacional mais amplamente implantados do mundo, alimentando tudo, desde pequenos projetos pessoais até aplicações em escala empresarial. Quer você seja um desenvolvedor, um administrador de sistemas ou um proprietário de negócio gerenciando sua própria infraestrutura, entender como criar usuários MySQL e configurar suas permissões é uma habilidade inegociável para manter um ambiente de banco de dados seguro e bem organizado.

O gerenciamento inadequado de usuários é uma das principais causas de violações de banco de dados. Conceder privilégios excessivos, reutilizar credenciais ou deixar contas padrão ativas pode expor toda a sua camada de dados a riscos desnecessários. Este guia o orienta através do processo completo — desde fazer login no MySQL até verificar permissões — com comandos claros, exemplos práticos e melhores práticas de segurança em cada etapa.

Por que o Gerenciamento de Usuários MySQL é Importante

Antes de mergulhar nos comandos, vale a pena entender *por que* isso é importante. MySQL opera em um princípio de privilégio mínimo: cada usuário deve ter acesso apenas aos bancos de dados, tabelas e operações específicas que realmente precisa. Isso minimiza o raio de explosão de uma conta comprometida e torna a auditoria muito mais fácil.

Se você estiver executando MySQL em um plano VPS Hosting gerenciado ou um Servidor Dedicado, você tem acesso de nível raiz completo à sua instância MySQL, dando a você controle total sobre criação de usuários e gerenciamento de permissões. Muitos ambientes de painel de controle — como aqueles disponíveis com VPS com cPanel — também fornecem uma interface gráfica para gerenciamento MySQL, que pode complementar a abordagem de linha de comando descrita aqui.

Pré-requisitos

Antes de começar, certifique-se de que você tem:

  • MySQL 5.7+ ou MySQL 8.0+ instalado e em execução no seu servidor
  • Acesso raiz ou acesso a uma conta de superusuário MySQL com privilégios GRANT OPTION
  • Acesso ao terminal (Linux/macOS) ou Prompt de Comando / PowerShell (Windows)

Passo 1: Faça Login no MySQL

Para gerenciar usuários e permissões, você deve se autenticar como um usuário com privilégios administrativos suficientes. Na maioria dos casos, esta é a conta root.

Abra seu Terminal ou Prompt de Comando

  • Linux / macOS: Abra seu aplicativo de terminal
  • Windows: Abra o Prompt de Comando ou PowerShell

Conecte-se ao Servidor MySQL

Execute o seguinte comando:

mysql -u root -p

Você será solicitado a inserir a senha raiz. Após a autenticação bem-sucedida, você verá o prompt MySQL:

mysql>

> Dica de segurança: Se você estiver se conectando a um servidor MySQL remoto, especifique o host com a flag -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Passo 2: Crie um Novo Usuário MySQL

Uma vez dentro do shell MySQL, você pode criar um novo usuário com a declaração CREATE USER.

Sintaxe

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

Detalhamento de parâmetros:

ParâmetroDescrição
usernameO nome que você deseja atribuir ao novo usuário
hostO host a partir do qual o usuário pode se conectar. Use localhost para acesso apenas local ou % como curinga para qualquer host
passwordUma senha forte e única para este usuário

Exemplo: Crie um Usuário Acessível de Qualquer Host

CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

Exemplo: Crie um Usuário Restrito ao Localhost

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';

> Melhor prática: Sempre que possível, restrinja usuários a localhost ou a um endereço IP específico em vez de usar %. O acesso de host com curinga aumenta sua superfície de ataque desnecessariamente.

Nota do MySQL 8.0 sobre Plugins de Autenticação

MySQL 8.0 introduziu caching_sha2_password como o plugin de autenticação padrão, o que pode causar problemas de compatibilidade com clientes ou aplicações mais antigas. Se necessário, você pode definir explicitamente o método de autenticação:

CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';

Passo 3: Conceda Permissões ao Usuário

Criar um usuário não concede automaticamente acesso a nenhum banco de dados. Você deve atribuir explicitamente privilégios usando a declaração GRANT.

Sintaxe

GRANT privileges ON database.table TO 'username'@'host';

Detalhamento de parâmetros:

ParâmetroDescrição
privilegesUma lista separada por vírgulas de permissões (por exemplo, SELECT, INSERT, UPDATE, DELETE) ou ALL PRIVILEGES
database.tableO escopo da concessão. Use *.* para todos os bancos de dados e tabelas, dbname.* para todas as tabelas em um banco de dados específico, ou dbname.tablename para uma única tabela
username@hostA conta de usuário alvo

Privilégios MySQL Comuns

PrivilégioDescrição
SELECTLer dados de tabelas
INSERTAdicionar novas linhas às tabelas
UPDATEModificar linhas existentes
DELETERemover linhas de tabelas
CREATECriar novos bancos de dados ou tabelas
DROPExcluir bancos de dados ou tabelas
INDEXCriar ou descartar índices
ALTERModificar estruturas de tabelas
ALL PRIVILEGESAcesso total (use com cuidado)
GRANT OPTIONPermitir que o usuário conceda privilégios a outros

Exemplo: Conceda Acesso Total a um Banco de Dados Específico

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Exemplo: Conceda Acesso Somente Leitura

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Exemplo: Conceda Privilégios Específicos em uma Única Tabela

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Exemplo: Conceda Privilégios Globais (Use com Moderação)

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

> Aviso: Conceder ALL PRIVILEGES ON *.* dá a um usuário acesso equivalente a superusuário. Reserve isso apenas para contas administrativas confiáveis.

Passo 4: Limpe Privilégios

Após fazer alterações nas permissões do usuário, é uma boa prática recarregar as tabelas de privilégios para que MySQL reconheça imediatamente suas alterações:

FLUSH PRIVILEGES;

> Nota: Em versões modernas do MySQL (5.7.3+), FLUSH PRIVILEGES é acionado automaticamente após as declarações GRANT, REVOKE e CREATE USER. No entanto, executá-lo explicitamente após edições manuais nas tabelas do sistema mysql (via INSERT ou UPDATE) continua sendo essencial.

Passo 5: Verifique as Permissões do Usuário

Sempre confirme que as permissões que você definiu estão corretas antes de colocar uma conta de usuário em produção.

Verifique as Concessões para um Usuário Específico

SHOW GRANTS FOR 'newuser'@'%';

Saída de exemplo:

+--------------------------------------------------------------+
| Grants for newuser@%                                         |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%`                          |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%`       |
+--------------------------------------------------------------+

Liste Todos os Usuários MySQL

SELECT user, host FROM mysql.user;

Verifique os Privilégios do Seu Próprio Usuário Atual

SHOW GRANTS;

Passo 6: Revogando Permissões (Quando Necessário)

As permissões mudam ao longo do tempo. Quando um usuário não precisa mais de certo acesso, revogue-o prontamente usando a declaração REVOKE:

Sintaxe

REVOKE privileges ON database.table FROM 'username'@'host';

Exemplo: Revogue Todos os Privilégios de um Usuário

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Exemplo: Revogue um Privilégio Específico

REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';

Passo 7: Descartando um Usuário (Quando Necessário)

Se uma conta de usuário não for mais necessária, remova-a completamente para eliminar vetores de acesso desnecessários:

DROP USER 'newuser'@'%';

Este comando remove a conta de usuário e todos os privilégios associados em uma única operação.

Gerenciamento de Usuários MySQL em Ambientes Hospedados

Se você estiver gerenciando MySQL em um ambiente de hospedagem compartilhada ou gerenciada, o processo pode diferir ligeiramente dependendo do seu painel de controle. Plataformas como cPanel, Plesk e DirectAdmin fornecem interfaces gráficas para criar usuários MySQL e atribuir permissões sem escrever SQL diretamente.

Para usuários que precisam de controle completo de linha de comando sem a sobrecarga de um servidor dedicado, os planos VPS Hosting oferecem o equilíbrio ideal de desempenho, flexibilidade e custo. Se você estiver executando aplicações intensivas em banco de dados que exigem máxima taxa de transferência e recursos isolados, considere fazer upgrade para um Servidor Dedicado para desempenho garantido.

Para projetos menores ou ambientes de desenvolvimento, os planos Hospedagem Web Compartilhada normalmente incluem acesso ao phpMyAdmin, que fornece uma interface baseada em navegador para gerenciamento de usuários e bancos de dados MySQL.

Além disso, se sua aplicação manipula dados sensíveis do usuário, emparelhar seu servidor de banco de dados com um Certificado SSL válido garante que os dados transmitidos entre sua aplicação e servidor de banco de dados permaneçam criptografados e protegidos contra interceptação.

Melhores Práticas de Segurança para Gerenciamento de Usuários MySQL

Seguir os passos técnicos é apenas metade do trabalho. Aqui estão práticas de segurança críticas que todo administrador deve implementar:

  1. Nunca use a conta raiz para conexões de aplicação. Crie usuários dedicados com privilégio mínimo para cada aplicação.
  2. Use senhas fortes e únicas para cada usuário MySQL. Considere um gerenciador de senhas ou cofre de segredos.
  3. Restrinja o acesso ao host a localhost ou endereços IP específicos sempre que possível.
  4. Audite contas de usuário regularmente. Remova contas que não estão mais ativas ou necessárias.
  5. Evite concessões com curinga (*.*) a menos que absolutamente necessário para tarefas administrativas.
  6. Ative o plugin de log de auditoria do MySQL em servidores de produção para rastrear toda atividade do usuário.
  7. Gire senhas periodicamente, especialmente após mudanças de pessoal ou suspeitas de comprometimento.
  8. Use SSL/TLS para conexões MySQL ao conectar por uma rede, mesmo dentro de uma LAN privada.

Referência Rápida: Comandos Essenciais de Gerenciamento de Usuários MySQL

TarefaComando
Faça login no MySQL###PPT_NOTR
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar