Tutorial

Comment créer un nouvel utilisateur et octroyer des autorisations dans MySQL

MySQL

Introduction

MySQL est un logiciel de gestion de base de données open-source qui aide les utilisateurs à stocker, organiser et récupérer des données. Un vaste éventail d'options est disponible pour octroyer les autorisations adaptées à des utilisateurs spécifiques dans les tables et les bases de données. Ce tutoriel vous donnera un bref aperçu de quelques-unes des nombreuses options disponibles.

Qu'est-ce que Highlights signifie ?

Au cours de ce tutoriel, toutes les lignes que l'utilisateur devra saisir ou personnaliser seront highlighted (mises en surbrillance) ! Le reste devra essentiellement être saisi via du copier-coller.

Comment créer un nouvel utilisateur

Dans la partie 1 du tutoriel MySQL, nous avons procédé à des modifications dans MySQL en tant que root user avec un accès complet à toutes les bases de données. Cependant, dans les cas où vous auriez besoin de configurer des restrictions supplémentaires , il existe des moyens de créer des utilisateurs avec des autorisations personnalisées.

Commençons par créer un nouvel utilisateur dans le shell MySQL :

  • CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Remarque : lorsque nous ajouterons des utilisateurs dans le shell MySQL au cours de ce tutoriel, nous indiquerons que l'hôte de l'utilisateur est localhost et non l'adresse IP du serveur. localhost est un nom d'hôte qui signifie « cet ordinateur ». MySQL traite tout particulièrement ce nom d'hôte spécifique : lorsqu'un utilisateur avec cet hôte se connecte sur MySQL, il tentera de se connecter au serveur local en utilisant un fichier de socket Unix. Par conséquent, de manière générale, vous pouvez utiliser localhost si vous prévoyez de vous connecter à votre serveur en SSH ou exécuter le client mysql local pour vous connecter au serveur MySQL local.

À ce stade, newuser n'a aucune autorisation et ne peut rien faire sur les bases de données. En effet, même si newuser tente de se connecter (avec le mot de passe password), il ne pourra pas atteindre le shell MySQL.

Par conséquent, la première chose à faire consiste à donner accès à l'utilisateur aux informations dont il a besoin.

  • GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Les astérisques de cette commande renvoient à la base de données et à la table (respectivement) auxquelles ils peuvent accéder. Cette commande spécifique permet à l'utilisateur de lire, modifier, exécuter et effectuer toutes tâches sur l'intégralité des bases de données et des tables.

Notez que, dans cet exemple, nous accordons à newuser un total accès root à tout ce qui se trouve dans notre base de données. Bien que cela soit utile pour expliquer certains concepts MySQL, il se peut que cette méthode soit impraticable sur la plupart des cas d'utilisation et expose votre base de données à d'importants risques de sécurité.

Une fois que vous en aurez fini avec les autorisations que vous souhaitez configurer pour vos nouveaux utilisateurs, veillez à toujours recharger tous les privilèges.

  • FLUSH PRIVILEGES;

Maintenant, vos modifications ont pris effet.

Comment octroyer différentes autorisations aux utilisateurs

Voici une courte liste des autres autorisations possibles couramment utilisées que vous pouvez octroyer aux utilisateurs.

  • ALL PRIVILEGES : comme nous l'avons vu précédemment, cela donne à l'utilisateur de MySQL un total accès à une base de données désignée (ou un accès global à l'ensemble du système si aucune base de données n'est sélectionnée)
  • CREATE : permet de créer de nouvelles tables ou bases de données
  • DROP :permet de supprimer des tables ou des bases de données
  • DELETE : permet de supprimer des lignes des tables
  • INSERT : permet d'insérer des lignes dans les tables
  • SELECT :permet d'utiliser la commande SELECT pour lire des bases de données
  • UPDATE : permet de mettre à jour les lignes d'une table
  • GRANT OPTION : permet d'accorder ou de supprimer les privilèges des autres utilisateurs

Pour donner une autorisation à un utilisateur spécifique, vous pouvez utiliser le framework suivant :

  • GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';

Si vous souhaitez lui donner accès à l'une des bases de données ou des tables, veillez à bien remplacer le nom de la base de données ou de la table par un astérisque (*).

À chaque fois que vous mettez à jour ou modifiez une autorisation, veillez à bien utiliser la commande Flush Privileges.

Pour révoquer une autorisation, la structure est pratiquement identique à celle de l'octroi d'autorisation :

  • REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';

Notez que, lorsque vous révoquez des autorisations, vous devez utiliser la syntaxe FROM à la place du TO que nous avons utilisé pour accorder des autorisations.

Vous pouvez contrôler les autorisations actuellement octroyées à un utilisateur en exécutant la commande suivante :

  • SHOW GRANTS FOR 'username'@'localhost';

De la même manière que vous pouvez supprimer des bases de données avec DROP, vous pouvez utiliser DROP pour supprimer complètement un utilisateur :

  • DROP USER 'username'@'localhost';

Pour tester votre nouvel utilisateur, déconnectez-vous en saisissant :

  • quit

et reconnectez-vous en utilisant la commande suivante dans le terminal :

  • mysql -u [username] -p

Conclusion

Une fois ce tutoriel terminé, vous devriez avoir une meilleure idée sur la manière d'ajouter de nouveaux utilisateurs et de leur octroyer différentes autorisations dans une base de données MySQL. De là, vous pouvez continuer d'explorer et d'expérimenter les différents paramètres d'autorisation qui existent pour votre base de données ou en apprendre plus sur certaines configurations MySQL de niveau supérieur.

Pour de plus amples informations sur les bases de MySQL, nous vous encourageons à consulter les tutoriels suivants :

Creative Commons License