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.
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.
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.
Voici une courte liste des autres autorisations possibles couramment utilisées que vous pouvez octroyer aux utilisateurs.
SELECT
pour lire des bases de donnéesPour 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
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 :
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Sign up for Infrastructure as a Newsletter.
Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.