A maioria das aplicações web só precisa de ler e escrever dados — nunca criam tabelas, eliminam índices ou gerem stored procedures. Ao conceder apenas SELECT, INSERT, UPDATE e DELETE, dá à sua aplicação exatamente as permissões de que necessita e nada mais.
Porquê Privilégios Apenas de Dados São Ideais para Aplicações
Uma aplicação web padrão realiza quatro operações de dados:
- SELECT — Ler linhas de tabelas (carregar páginas, obter registos).
- INSERT — Adicionar novas linhas (registos de utilizadores, submissões de formulários).
- UPDATE — Modificar linhas existentes (editar perfis, atualizar definições).
- DELETE — Remover linhas (eliminar publicações, limpar sessões).
Estes quatro privilégios cobrem virtualmente todas as consultas que um CMS, plataforma de e-commerce ou aplicação web personalizada alguma vez executará. Conceder privilégios adicionais de estrutura ou administração cria risco desnecessário.
Método 1: Durante a Criação do Utilizador
- Inicie sessão em mysql.nobregas.org.
- Vá a Database Users > clique em Create User.
- Introduza o nome de utilizador, palavra-passe e host.
- Selecione a base de dados de destino no dropdown Grant to Database.
- A secção Privileges aparece com ALL PRIVILEGES marcado.
- Desmarque ALL PRIVILEGES para revelar checkboxes individuais.
- Em Data, marque: SELECT, INSERT, UPDATE, DELETE.
- Deixe todos os checkboxes de Structure e Administration desmarcados.
- Clique em Create User.
Método 2: Via Manage (Utilizador Existente)
- Vá a Database Users e clique em Manage no utilizador.
- Na secção Add Database Access, selecione a base de dados.
- Desmarque ALL PRIVILEGES.
- Marque apenas SELECT, INSERT, UPDATE, DELETE.
- Clique em Add Grant.
Método 3: Fazer Downgrade de um Grant Existente
Se um utilizador atualmente tem ALL PRIVILEGES e quer restringir a apenas dados:
- Clique em Manage no utilizador.
- Encontre a base de dados em Current Grants e clique em Edit.
- Desmarque ALL PRIVILEGES.
- Marque apenas SELECT, INSERT, UPDATE, DELETE.
- Clique em Save Changes.
O Que Este Utilizador Pode Fazer
| Operação | Consulta de Exemplo | Permitido? |
|---|---|---|
| Ler dados | SELECT * FROM users |
Sim |
| Adicionar linhas | INSERT INTO orders (...) |
Sim |
| Editar linhas | UPDATE products SET price = 9.99 |
Sim |
| Remover linhas | DELETE FROM sessions WHERE expired = 1 |
Sim |
| Criar tabela | CREATE TABLE logs (...) |
Não |
| Eliminar tabela | DROP TABLE users |
Não |
| Alterar estrutura | ALTER TABLE users ADD COLUMN age INT |
Não |
Quando Utilizar Esta Configuração
- WordPress, Joomla, Laravel, Django — Estes frameworks só precisam de operações CRUD após a configuração inicial.
- Lojas de e-commerce — WooCommerce, PrestaShop e plataformas similares.
- APIs personalizadas — Backends REST ou GraphQL que leem e escrevem dados.
- Ambientes de alojamento partilhado — Limitar o raio de explosão se as credenciais forem divulgadas.
Benefício de Segurança
Se um atacante obtiver acesso a um utilizador apenas de dados, não pode:
- Eliminar ou truncar as suas tabelas.
- Alterar a estrutura das tabelas.
- Criar triggers ou stored procedures.
- Causar danos estruturais irreversíveis.
Os seus dados podem ainda estar em risco, mas o esquema da base de dados permanece intacto — tornando a recuperação significativamente mais fácil.