La plupart des applications web n'ont besoin que de lire et écrire des données — elles ne créent jamais de tables, ne suppriment pas d'index et ne gèrent pas de procédures stockées. En accordant uniquement SELECT, INSERT, UPDATE et DELETE, vous donnez à votre application exactement les permissions dont elle a besoin et rien de plus.
Pourquoi les Privilèges de Données Uniquement Sont Idéaux pour les Applications
Une application web standard effectue quatre opérations sur les données :
- SELECT — Lire les lignes des tables (chargement de pages, récupération d'enregistrements).
- INSERT — Ajouter de nouvelles lignes (inscriptions d'utilisateurs, soumissions de formulaires).
- UPDATE — Modifier les lignes existantes (modification de profils, mise à jour de paramètres).
- DELETE — Supprimer des lignes (suppression de publications, nettoyage de sessions).
Ces quatre privilèges couvrent virtuellement toutes les requêtes qu'un CMS, une plateforme e-commerce ou une application web personnalisée exécutera. Accorder des privilèges de structure ou d'administration supplémentaires crée un risque inutile.
Méthode 1 : Lors de la Création de l'Utilisateur
- Connectez-vous sur mysql.nobregas.org.
- Allez dans Database Users > cliquez sur Create User.
- Entrez le nom d'utilisateur, le mot de passe et l'hôte.
- Sélectionnez la base de données cible dans le menu déroulant Grant to Database.
- La section Privileges apparaît avec ALL PRIVILEGES coché.
- Décochez ALL PRIVILEGES pour révéler les cases à cocher individuelles.
- Sous Data, cochez : SELECT, INSERT, UPDATE, DELETE.
- Laissez toutes les cases Structure et Administration décochées.
- Cliquez sur Create User.
Méthode 2 : Via Manage (Utilisateur Existant)
- Allez dans Database Users et cliquez sur Manage sur l'utilisateur.
- Dans la section Add Database Access, sélectionnez la base de données.
- Décochez ALL PRIVILEGES.
- Cochez uniquement SELECT, INSERT, UPDATE, DELETE.
- Cliquez sur Add Grant.
Méthode 3 : Rétrograder un Grant Existant
Si un utilisateur a actuellement ALL PRIVILEGES et que vous voulez le restreindre aux données uniquement :
- Cliquez sur Manage sur l'utilisateur.
- Trouvez la base de données dans Current Grants et cliquez sur Edit.
- Décochez ALL PRIVILEGES.
- Cochez uniquement SELECT, INSERT, UPDATE, DELETE.
- Cliquez sur Save Changes.
Ce Que Cet Utilisateur Peut Faire
| Opération | Requête Exemple | Autorisé ? |
|---|---|---|
| Lire les données | SELECT * FROM users |
Oui |
| Ajouter des lignes | INSERT INTO orders (...) |
Oui |
| Modifier des lignes | UPDATE products SET price = 9.99 |
Oui |
| Supprimer des lignes | DELETE FROM sessions WHERE expired = 1 |
Oui |
| Créer une table | CREATE TABLE logs (...) |
Non |
| Supprimer une table | DROP TABLE users |
Non |
| Modifier la structure | ALTER TABLE users ADD COLUMN age INT |
Non |
Quand Utiliser Cette Configuration
- WordPress, Joomla, Laravel, Django — Ces frameworks n'ont besoin que d'opérations CRUD après l'installation initiale.
- Boutiques e-commerce — WooCommerce, PrestaShop et plateformes similaires.
- APIs personnalisées — Backends REST ou GraphQL qui lisent et écrivent des données.
- Environnements d'hébergement mutualisé — Limiter les dégâts en cas de fuite d'identifiants.
Avantage Sécuritaire
Si un attaquant accède à un utilisateur données-uniquement, il ne pourra pas :
- Supprimer ou tronquer vos tables.
- Modifier la structure de vos tables.
- Créer des triggers ou des procédures stockées.
- Causer des dommages structurels irréversibles.
Vos données peuvent toujours être à risque, mais le schéma de votre base de données reste intact — rendant la récupération considérablement plus facile.