MySQL CREATE USER : comment créer un utilisateur dans MySQL ?

Pour pouvoir créer un nouvel utilisateur dans MySQL, vous devez disposer, en plus de l’accès à la base de données concernée, de droits d’administrateur suffisants ou de privilèges de super user qui vous permettent de créer des comptes utilisateur et de gérer les autorisations. Vous devez également savoir de quel type d’accès le nouvel utilisateur a besoin : droits de lecture, droits d’écriture ou même droits administratifs.

Comment créer un utilisateur MySQL avec CREATE USER ?

Lors de l’installation du système de gestion de base de données, MySQL crée un compte racine (root) qui vous permet d’avoir un contrôle total sur vos bases de données, tables et utilisateurs afin de les gérer en tant qu’administrateur. Si vous avez besoin d’aide pour l’installation, vous trouverez toutes les informations utiles à ce sujet dans notre tutoriel dédié à MySQL.

Avec votre compte root, vous pouvez créer d’autres comptes utilisateurs ou de nouveaux utilisateurs MySQL et leur attribuer des autorisations. Notez que sur les systèmes Ubuntu avec MySQL 5.7 et versions ultérieures, l’utilisateur root MySQL est configuré par défaut pour s’authentifier non pas avec un mot de passe, mais avec le plugin auth_socket. Pour cela, le nom de l’utilisateur système qui appelle le client MySQL doit correspondre au nom de l’utilisateur MySQL indiqué dans la commande. Cela signifie que vous devez faire précéder la commande sudo pour avoir accès à votre compte root :

$ sudo mysql
bash

Pour créer un nouvel utilisateur dans MySQL, utilisez la commande CREATE USER. Celle-ci vous permet de créer un utilisateur avec un nom d’utilisateur et un mot de passe spécifiques :

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
bash

Remplacez username par le nom d’utilisateur de votre choix. Ensuite, indiquez sous host le nom respectif de l’hôte à partir duquel le nouvel utilisateur se connectera. Si l’utilisateur ne doit avoir accès qu’à partir de votre serveur Ubuntu local, vous pouvez indiquer localhost.

Lors du choix du plugin d’authentification, plusieurs possibilités s’offrent à vous : le plugin auth_socket offre une sécurité élevée, car les utilisateurs doivent saisir un mot de passe pour accéder à la base de données. Cependant, il empêche les connexions à distance et peut donc entraîner une charge de travail plus importante si des programmes externes doivent interagir avec MySQL. Vous pouvez également omettre la partie de la commande WITH authentication_plugin pour que l’utilisateur s’authentifie via le plugin MySQL standard caching_sha2_password. Dans ce cas, la commande est la suivante :

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Après avoir créé un nouvel utilisateur, vous devez lui attribuer des autorisations.

Nom de domaine
Votre domaine en un clic
  • Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
  • 1 certificat SSL Wildcard par contrat
  • Boîte email de 2 Go

Attribuer des droits d’utilisateur avec MySQL CREATE USER

La création et la gestion des droits d’utilisateur sont essentielles pour la sécurité des données dans MySQL. La commande générale pour l’attribution des droits d’utilisateur est :

mysql> GRANT PRIVILEGES ON database.table TO 'username'@'host';
bash

La valeur PRIVILEGES détermine les actions que l’utilisateur peut effectuer dans la base de données et la table indiquées. Vous pouvez notamment remplacer cette valeur par les commandes suivantes :

  • CREATE : permet aux utilisateurs de créer une base de données ou une table.
  • SELECT : permet aux utilisateurs de récupérer des données.
  • INSERT : permet aux utilisateurs d’ajouter de nouvelles entrées dans les tables.
  • UPDATE : permet aux utilisateurs de modifier les entrées existantes dans les tables.
  • DELETE : permet aux utilisateurs de supprimer des entrées de tableau.
  • DROP : permet aux utilisateurs de supprimer des tables entières de la base de données.

De plus, vous pouvez accorder plusieurs privilèges à la fois au nouvel utilisateur. Pour cela, ils doivent être séparés par une virgule :

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
bash

Les autorisations pour toutes les bases de données ou tables peuvent également être accordées en une seule commande, en tapant * à la place du nom de la base de données et de la table. Par exemple, la commande suivante donne à un utilisateur le droit d’interroger toutes les bases de données et tables avec SELECT, d’ajouter de nouvelles entrées avec INSERT et de modifier les contributions existantes avec UPDATE.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Après avoir exécuté l’application GRANT ou CREATE USER dans MySQL, vous pouvez utiliser la commande FLUSH PRIVILEGES pour mettre à jour la base de données afin de recharger les tables d’autorisations. Vous vous assurez ainsi que les nouvelles autorisations sont mises en vigueur :

mysql> FLUSH PRIVILEGES;
bash

Vous ne devriez toutefois accorder aux utilisateurs que les autorisations dont ils ont besoin. Si vous donnez à un utilisateur un contrôle total, cela peut représenter un haut risque de sécurité.

MySQL CREATE USER : retirer les droits d’utilisateur

Pour révoquer des droits d’utilisateur dans MySQL, on utilise la commande REVOKE. La syntaxe est similaire à celle de la commande GRANT. Cependant, dans ce cas, vous devez utiliser FROM au lieu de TO :

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
bash

Pour afficher les permissions actuelles d’un utilisateur, vous pouvez utiliser la commande SHOW GRANTS :

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Pour supprimer un utilisateur, on utilise la commande DROP :

mysql> DROP USER 'username'@'localhost';
bash

Cependant, il faut agir avec prudence lorsque vous supprimez des utilisateurs, en particulier s’il s’agit d’utilisateurs avec des privilèges administratifs. Assurez-vous de ne pas faire d’erreur dans la suppression afin d’éviter toute perte de données accidentelle.

Après avoir créé un nouvel utilisateur MySQL et lui avoir accordé des droits, vous pouvez quitter le client MySQL :

mysql> exit
bash
Cet article vous a-t-il été utile ?
Page top