Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Administração

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

MySQL continua a ser um dos sistemas de gestão de bases de dados relacionais mais amplamente implementados no mundo, alimentando tudo, desde pequenos projetos pessoais até aplicações em escala empresarial. Quer seja um programador, um administrador de sistemas ou um proprietário de negócio que gere a sua própria infraestrutura, compreender como criar utilizadores MySQL e configurar as suas permissões é uma competência inegociável para manter um ambiente de base de dados seguro e bem organizado.

A má gestão de utilizadores é uma das principais causas de violações de bases de dados. Conceder privilégios excessivos, reutilizar credenciais ou deixar contas predefinidas ativas pode expor toda a sua camada de dados a riscos desnecessários. Este guia orienta-o através do processo completo — desde o acesso ao MySQL até à verificação de permissões — com comandos claros, exemplos práticos e boas práticas de segurança em cada etapa.

Por que a Gestão de Utilizadores MySQL é Importante

Antes de mergulhar nos comandos, vale a pena compreender *por que* isto é importante. MySQL funciona com um princípio de menor privilégio: cada utilizador deve ter acesso apenas às bases de dados, tabelas e operações específicas de que realmente necessita. Isto minimiza o raio de explosão de uma conta comprometida e torna a auditoria muito mais fácil.

Se está a executar MySQL num plano de VPS Hosting gerido ou num Servidor Dedicado, tem acesso completo ao nível de raiz à sua instância MySQL, dando-lhe controlo total sobre a criação de utilizadores e gestão de permissões. Muitos ambientes de painel de controlo — como os disponíveis com VPS com cPanel — também fornecem uma interface gráfica para gestão de MySQL, que pode complementar a abordagem de linha de comandos descrita aqui.

Pré-requisitos

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

  • MySQL 5.7+ ou MySQL 8.0+ instalado e em execução no seu servidor
  • Acesso root ou acesso a uma conta de superutilizador MySQL com privilégios GRANT OPTION
  • Acesso ao Terminal (Linux/macOS) ou Linha de Comandos / PowerShell (Windows)

Passo 1: Iniciar Sessão no MySQL

Para gerir utilizadores e permissões, deve autenticar-se como um utilizador com privilégios administrativos suficientes. Na maioria dos casos, esta é a conta root.

Abra o Seu Terminal ou Linha de Comandos

  • Linux / macOS: Abra a sua aplicação de terminal
  • Windows: Abra a Linha de Comandos ou PowerShell

Conecte-se ao Servidor MySQL

Execute o seguinte comando:

mysql -u root -p

Ser-lhe-á pedido que introduza a palavra-passe de raiz. Após autenticação bem-sucedida, verá a linha de comandos MySQL:

mysql>

> Dica de segurança: Se está a conectar-se a um servidor MySQL remoto, especifique o anfitrião com a bandeira -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Passo 2: Criar um Novo Utilizador MySQL

Depois de estar dentro da shell MySQL, pode criar um novo utilizador com a declaração CREATE USER.

Sintaxe

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

Descrição dos parâmetros:

ParâmetroDescrição
usernameO nome que pretende atribuir ao novo utilizador
hostO anfitrião a partir do qual o utilizador tem permissão para se conectar. Use localhost para acesso apenas local ou % como um wildcard para qualquer anfitrião
passwordUma palavra-passe forte e única para este utilizador

Exemplo: Criar um Utilizador Acessível a partir de Qualquer Anfitrião

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

Exemplo: Criar um Utilizador Restrito ao Localhost

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

> Melhor prática: Sempre que possível, restrinja os utilizadores a localhost ou a um endereço IP específico em vez de usar %. O acesso de anfitrião wildcard aumenta desnecessariamente a sua superfície de ataque.

Nota 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, pode definir explicitamente o método de autenticação:

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

Passo 3: Conceder Permissões ao Utilizador

Criar um utilizador não lhe concede automaticamente acesso a nenhuma base de dados. 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 âmbito da concessão. Use *.* para todas as bases de dados e tabelas, dbname.* para todas as tabelas numa base de dados específica, ou dbname.tablename para uma única tabela
username@hostA conta de utilizador 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 novas bases de dados ou tabelas
DROPEliminar bases de dados ou tabelas
INDEXCriar ou eliminar índices
ALTERModificar estruturas de tabelas
ALL PRIVILEGESAcesso total (usar com cuidado)
GRANT OPTIONPermitir que o utilizador conceda privilégios a outros

Exemplo: Conceder Acesso Total a uma Base de Dados Específica

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

Exemplo: Conceder Acesso Apenas de Leitura

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

Exemplo: Conceder Privilégios Específicos numa Única Tabela

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

Exemplo: Conceder Privilégios Globais (Usar com Moderação)

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

> Aviso: Conceder ALL PRIVILEGES ON *.* dá a um utilizador acesso equivalente a superutilizador. Reserve isto apenas para contas administrativas de confiança.

Passo 4: Limpar Privilégios

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

FLUSH PRIVILEGES;

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

Passo 5: Verificar Permissões do Utilizador

Confirme sempre que as permissões que definiu estão corretas antes de colocar uma conta de utilizador em produção.

Verificar Concessões para um Utilizador Específico

SHOW GRANTS FOR 'newuser'@'%';

Resultado de exemplo:

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

Listar Todos os Utilizadores MySQL

SELECT user, host FROM mysql.user;

Verificar os Privilégios do Utilizador Atual

SHOW GRANTS;

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

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

Sintaxe

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

Exemplo: Revogar Todos os Privilégios de um Utilizador

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

Exemplo: Revogar um Privilégio Específico

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

Passo 7: Remover um Utilizador (Quando Necessário)

Se uma conta de utilizador já não é necessária, remova-a completamente para eliminar vetores de acesso desnecessários:

DROP USER 'newuser'@'%';

Este comando remove a conta de utilizador e todos os privilégios associados numa única operação.

Gestão de Utilizadores MySQL em Ambientes Alojados

Se está a gerir MySQL num ambiente de alojamento partilhado ou gerido, o processo pode diferir ligeiramente dependendo do seu painel de controlo. Plataformas como cPanel, Plesk e DirectAdmin fornecem interfaces gráficas para criar utilizadores MySQL e atribuir permissões sem escrever SQL diretamente.

Para utilizadores que precisam de controlo completo da linha de comandos sem a sobrecarga de um servidor dedicado, os planos de Alojamento VPS oferecem o equilíbrio ideal entre desempenho, flexibilidade e custo. Se está a executar aplicações intensivas em bases de dados que requerem máximo débito e recursos isolados, considere atualizar para um Servidor Dedicado para desempenho garantido.

Para projetos mais pequenos ou ambientes de desenvolvimento, os planos de Alojamento Web Partilhado normalmente incluem acesso ao phpMyAdmin, que fornece uma interface baseada em navegador para gestão de utilizadores e bases de dados MySQL.

Além disso, se a sua aplicação processa dados sensíveis de utilizadores, emparelhar o seu servidor de base de dados com um Certificado SSL válido garante que os dados transmitidos entre a sua aplicação e servidor de base de dados permanecem encriptados e protegidos contra interceção.

Práticas de Segurança para Gestão de Utilizadores MySQL

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

  1. Nunca utilize a conta root para ligações de aplicações. Crie utilizadores dedicados com privilégios mínimos para cada aplicação.
  2. Utilize palavras-passe fortes e únicas para cada utilizador MySQL. Considere um gestor de palavras-passe ou cofre de segredos.
  3. Restrinja o acesso ao anfitrião para localhost ou endereços IP específicos sempre que possível.
  4. Audite as contas de utilizador regularmente. Remova contas que já não estão ativas ou são necessárias.
  5. Evite concessões com caracteres universais (*.*) a menos que seja absolutamente necessário para tarefas administrativas.
  6. Ative o plugin de registo de auditoria do MySQL nos servidores de produção para rastrear toda a atividade do utilizador.
  7. Altere as palavras-passe periodicamente, especialmente após mudanças de pessoal ou suspeitas de comprometimento.
  8. Utilize SSL/TLS para ligações MySQL ao conectar através de uma rede, mesmo dentro de uma LAN privada.

Referência Rápida: Comandos Essenciais de Gestão de Utilizadores MySQL

TarefaComando
Iniciar sessão no MySQLmysql -u root -p
Criar um novo utilizadorCREATE USER 'user'@'host' IDENTIFIED BY 'pass';
Conceder todos os privilégios numa BDGRANT ALL PRIVILEGES ON db.* TO 'user'@'host';
Conceder acesso apenas de leituraGRANT SELECT ON db.* TO 'user'@'host';
Atualizar privilégiosFLUSH PRIVILEGES;
Mostrar privilégios do utilizadorSHOW GRANTS FOR 'user'@'host';
Listar todos os utilizadoresSELECT user, host FROM mysql.user;
Revogar privilégiosREVOKE privileges ON db.* FROM 'user'@'host';
Eliminar um utilizadorDROP USER 'user'@'host';

Conclusão

A gestão adequada de utilizadores MySQL é um pilar fundamental da segurança de bases de dados e da higiene operacional. Ao criar contas de utilizador dedicadas, atribuir apenas as permissões que cada conta realmente necessita e auditar regularmente a sua lista de utilizadores, reduz drasticamente o risco de acesso não autorizado, fuga de dados e escalação de privilégios.

Os comandos abordados neste guia — CREATE USER, GRANT, REVOKE, FLUSH PRIVILEGES, SHOW GRANTS e DROP USER — formam o conjunto de ferramentas essencial que todo o administrador de bases de dados necessita. Quer esteja a gerir uma única base de dados de desenvolvimento ou a supervisionar dezenas de instâncias de produção, a aplicação consistente destas práticas manterá o seu ambiente MySQL seguro, sustentável e em conformidade.

Para um ambiente de alojamento que lhe oferece o controlo total necessário para implementar estas melhores práticas, explore a gama de soluções da AlexHost — desde Alojamento Web Partilhado para projectos diretos até Painéis de Controlo VPS totalmente geridos para equipas que necessitam de potência e flexibilidade sem a complexidade da administração de servidores dedicados.