Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code : Skills Commencer
Sections
Administration

Comment créer un nouvel utilisateur et définir les autorisations dans MySQL

MySQL reste l’un des systèmes de gestion de bases de données relationnelles les plus largement déployés au monde, alimentant tout, des petits projets personnels aux applications à l’échelle de l’entreprise. Que vous soyez développeur, administrateur système ou propriétaire d’entreprise gérant votre propre infrastructure, savoir créer des utilisateurs MySQL et configurer leurs permissions est une compétence incontournable pour maintenir un environnement de base de données sécurisé et bien organisé.

Une mauvaise gestion des utilisateurs est l’une des principales causes de violations de bases de données. Accorder des privilèges excessifs, réutiliser des identifiants ou laisser des comptes par défaut actifs peut exposer toute votre couche de données à des risques inutiles. Ce guide vous guide à travers le processus complet — de la connexion à MySQL à la vérification des permissions — avec des commandes claires, des exemples pratiques et les meilleures pratiques de sécurité à chaque étape.

Pourquoi la gestion des utilisateurs MySQL est importante

Avant de plonger dans les commandes, il vaut la peine de comprendre *pourquoi* cela importe. MySQL fonctionne selon un principe du moindre privilège : chaque utilisateur ne devrait avoir accès qu’aux bases de données, tables et opérations spécifiques dont il a réellement besoin. Cela minimise l’impact d’un compte compromis et rend l’audit beaucoup plus facile.

Si vous exécutez MySQL sur un plan VPS Hosting géré ou un Serveur Dédié, vous avez un accès root complet à votre instance MySQL, vous donnant un contrôle total sur la création d’utilisateurs et la gestion des permissions. De nombreux environnements de panneau de contrôle — comme ceux disponibles avec VPS avec cPanel — fournissent également une interface graphique pour la gestion de MySQL, qui peut compléter l’approche en ligne de commande décrite ici.

Prérequis

Avant de commencer, assurez-vous que vous disposez de :

  • MySQL 5.7+ ou MySQL 8.0+ installé et en cours d’exécution sur votre serveur
  • Accès root ou accès à un compte superutilisateur MySQL avec les privilèges GRANT OPTION
  • Accès au terminal (Linux/macOS) ou Invite de commandes / PowerShell (Windows)

Étape 1 : Se connecter à MySQL

Pour gérer les utilisateurs et les autorisations, vous devez vous authentifier en tant qu’utilisateur disposant de privilèges administratifs suffisants. Dans la plupart des cas, il s’agit du compte root.

Ouvrez votre terminal ou invite de commandes

  • Linux / macOS : Ouvrez votre application terminal
  • Windows : Ouvrez l’invite de commandes ou PowerShell

Connectez-vous au serveur MySQL

Exécutez la commande suivante :

mysql -u root -p

Vous serez invité à entrer le mot de passe root. Une fois l’authentification réussie, vous verrez l’invite MySQL :

mysql>

> Conseil de sécurité : Si vous vous connectez à un serveur MySQL distant, spécifiez l’hôte avec le drapeau -h :

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Étape 2 : Créer un nouvel utilisateur MySQL

Une fois à l’intérieur du shell MySQL, vous pouvez créer un nouvel utilisateur avec l’instruction CREATE USER.

Syntaxe

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

Détail des paramètres :

ParamètreDescription
usernameLe nom que vous souhaitez attribuer au nouvel utilisateur
hostL’hôte à partir duquel l’utilisateur est autorisé à se connecter. Utilisez localhost pour un accès local uniquement ou % comme caractère générique pour n’importe quel hôte
passwordUn mot de passe fort et unique pour cet utilisateur

Exemple : Créer un utilisateur accessible depuis n’importe quel hôte

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

Exemple : Créer un utilisateur limité à Localhost

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

> Bonne pratique : Autant que possible, limitez les utilisateurs à localhost ou à une adresse IP spécifique plutôt que d’utiliser %. L’accès avec caractère générique augmente inutilement votre surface d’attaque.

Note MySQL 8.0 sur les plugins d’authentification

MySQL 8.0 a introduit caching_sha2_password comme plugin d’authentification par défaut, ce qui peut causer des problèmes de compatibilité avec les anciens clients ou applications. Si nécessaire, vous pouvez définir explicitement la méthode d’authentification :

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

Étape 3 : Accorder les autorisations à l’utilisateur

La création d’un utilisateur ne lui accorde pas automatiquement l’accès à une base de données. Vous devez explicitement assigner les privilèges en utilisant l’instruction GRANT.

Syntaxe

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

Détail des paramètres :

ParamètreDescription
privilegesUne liste de permissions séparées par des virgules (par exemple, SELECT, INSERT, UPDATE, DELETE) ou ALL PRIVILEGES
database.tableL’étendue de l’octroi. Utilisez *.* pour toutes les bases de données et tables, dbname.* pour toutes les tables d’une base de données spécifique, ou dbname.tablename pour une seule table
username@hostLe compte utilisateur cible

Privilèges MySQL courants

PrivilègeDescription
SELECTLire les données des tables
INSERTAjouter de nouvelles lignes aux tables
UPDATEModifier les lignes existantes
DELETESupprimer les lignes des tables
CREATECréer de nouvelles bases de données ou tables
DROPSupprimer les bases de données ou tables
INDEXCréer ou supprimer des index
ALTERModifier les structures de table
ALL PRIVILEGESAccès complet (à utiliser avec prudence)
GRANT OPTIONPermettre à l’utilisateur d’accorder des privilèges à d’autres

Exemple : Accorder un accès complet à une base de données spécifique

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

Exemple : Accorder un accès en lecture seule

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

Exemple : Accorder des privilèges spécifiques sur une seule table

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

Exemple : Accorder des privilèges globaux (À utiliser avec parcimonie)

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

> Avertissement : Accorder ALL PRIVILEGES ON *.* donne à un utilisateur un accès équivalent à un superutilisateur. Réservez cela uniquement aux comptes administratifs de confiance.

Étape 4 : Vider les privilèges

Après avoir apporté des modifications aux permissions des utilisateurs, il est recommandé de recharger les tables de privilèges pour que MySQL reconnaisse immédiatement vos modifications :

FLUSH PRIVILEGES;

> Remarque : Dans les versions modernes de MySQL (5.7.3+), FLUSH PRIVILEGES est automatiquement déclenché après les instructions GRANT, REVOKE et CREATE USER. Cependant, l’exécuter explicitement après les modifications manuelles des tables système mysql (via INSERT ou UPDATE) reste essentielle.

Étape 5 : Vérifier les permissions utilisateur

Confirmez toujours que les permissions que vous avez définies sont correctes avant de mettre un compte utilisateur en production.

Vérifier les droits d’un utilisateur spécifique

SHOW GRANTS FOR 'newuser'@'%';

Exemple de sortie :

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

Lister tous les utilisateurs MySQL

SELECT user, host FROM mysql.user;

Vérifier les privilèges de l’utilisateur actuel

SHOW GRANTS;

Étape 6 : Révocation des autorisations (si nécessaire)

Les autorisations changent au fil du temps. Lorsqu’un utilisateur n’a plus besoin d’un certain accès, révoquez-le rapidement en utilisant l’instruction REVOKE :

Syntaxe

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

Exemple : Révoquer tous les privilèges d’un utilisateur

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

Exemple : Révoquer un privilège spécifique

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

Étape 7 : Supprimer un utilisateur (si nécessaire)

Si un compte utilisateur n’est plus nécessaire, supprimez-le entièrement pour éliminer les vecteurs d’accès inutiles :

DROP USER 'newuser'@'%';

Cette commande supprime le compte utilisateur et tous les privilèges associés en une seule opération.

Gestion des utilisateurs MySQL sur les environnements d’hébergement

Si vous gérez MySQL sur un environnement d’hébergement partagé ou géré, le processus peut différer légèrement selon votre panneau de contrôle. Des plateformes comme cPanel, Plesk et DirectAdmin fournissent des interfaces graphiques pour créer des utilisateurs MySQL et attribuer des permissions sans écrire directement du SQL.

Pour les utilisateurs qui ont besoin d’un contrôle complet en ligne de commande sans les frais généraux d’un serveur dédié, les plans VPS Hosting offrent l’équilibre idéal entre performance, flexibilité et coût. Si vous exécutez des applications gourmandes en bases de données qui nécessitent un débit maximal et des ressources isolées, envisagez de passer à un Dedicated Server pour une performance garantie.

Pour les petits projets ou les environnements de développement, les plans Shared Web Hosting incluent généralement l’accès à phpMyAdmin, qui fournit une interface basée sur un navigateur pour la gestion des utilisateurs et des bases de données MySQL.

De plus, si votre application traite des données utilisateur sensibles, l’association de votre serveur de base de données avec un SSL Certificate valide garantit que les données transmises entre votre application et votre serveur de base de données restent chiffrées et protégées contre l’interception.

Bonnes pratiques de sécurité pour la gestion des utilisateurs MySQL

Suivre les étapes techniques n’est que la moitié du travail. Voici les pratiques de sécurité critiques que chaque administrateur devrait mettre en œuvre :

  1. N’utilisez jamais le compte root pour les connexions d’application. Créez des utilisateurs dédiés avec des privilèges minimaux pour chaque application.
  2. Utilisez des mots de passe forts et uniques pour chaque utilisateur MySQL. Envisagez un gestionnaire de mots de passe ou un coffre-fort de secrets.
  3. Limitez l’accès à l’hôte à localhost ou à des adresses IP spécifiques autant que possible.
  4. Auditez régulièrement les comptes utilisateurs. Supprimez les comptes qui ne sont plus actifs ou nécessaires.
  5. Évitez les octrois de droits génériques (*.*) sauf si absolument nécessaire pour les tâches administratives.
  6. Activez le plugin de journal d’audit MySQL sur les serveurs de production pour suivre toute l’activité des utilisateurs.
  7. Renouvelez les mots de passe régulièrement, en particulier après des changements de personnel ou des compromis suspectés.
  8. Utilisez SSL/TLS pour les connexions MySQL lors de la connexion sur un réseau, même au sein d’un LAN privé.

Référence rapide : Commandes essentielles de gestion des utilisateurs MySQL

TâcheCommande
Se connecter à MySQLmysql -u root -p
Créer un nouvel utilisateurCREATE USER 'user'@'host' IDENTIFIED BY 'pass';
Accorder tous les privilèges sur une BDGRANT ALL PRIVILEGES ON db.* TO 'user'@'host';
Accorder un accès en lecture seuleGRANT SELECT ON db.* TO 'user'@'host';
Actualiser les privilègesFLUSH PRIVILEGES;
Afficher les droits de l’utilisateurSHOW GRANTS FOR 'user'@'host';
Lister tous les utilisateursSELECT user, host FROM mysql.user;
Révoquer les privilègesREVOKE privileges ON db.* FROM 'user'@'host';
Supprimer un utilisateurDROP USER 'user'@'host';

Conclusion

La gestion appropriée des utilisateurs MySQL est un pilier fondamental de la sécurité des bases de données et de l’hygiène opérationnelle. En créant des comptes utilisateur dédiés, en attribuant uniquement les autorisations que chaque compte nécessite réellement, et en auditant régulièrement votre liste d’utilisateurs, vous réduisez considérablement le risque d’accès non autorisé, de fuite de données et d’escalade de privilèges.

Les commandes couvertes dans ce guide — CREATE USER, GRANT, REVOKE, FLUSH PRIVILEGES, SHOW GRANTS, et DROP USER — forment la boîte à outils essentielle dont tout administrateur de base de données a besoin. Que vous gériez une seule base de données de développement ou supervisiez des dizaines d’instances de production, l’application cohérente de ces pratiques maintiendra votre environnement MySQL sécurisé, maintenable et conforme.

Pour un environnement d’hébergement qui vous donne le contrôle total nécessaire pour mettre en œuvre ces meilleures pratiques, explorez la gamme de solutions d’AlexHost — de l’Hébergement Web Partagé pour les projets simples aux Panneaux de Contrôle VPS entièrement gérés pour les équipes qui ont besoin de puissance et de flexibilité sans la complexité de l’administration bare-metal.