Créer un utilisateur mysql avec des droits spécifiques sur une base particulière

Par défaut quand on développe un site, on est souvent Super User. Le problème est que si on se fait voler les mots de passe, la base MySQL devient vulnérable et peut être vidée de son contenu. Dans la mesure du possible, il faut créer autant d'utilisateurs MySQL qu'il y a d'accès différents à des tables de la base, quitte à ce que ce soit la même personne humaine qui se cache derrière tout çà.

On va utiliser phpMyAdmin pour créer l'utilisateur.
Attention : pour créer un utilisateur, vous devez être Super User afin de pouvoir avoir accès à la base "mysql" de MySQL. L'utilisateur root est souvent agréé des pleins pouvoirs.

- Ouvrons phpMyAdmin : http://localhost/mysql/

- Pour permettre d'illustrer la manoeuvre, créez une base de test et éventuellement des tables

- Sur la page d'accueil de phpMyAdmin, cliquez sur le lien "Privilèges"

- Cliquez ensuite sur un petit lien "Ajouter un utilisateur"

- C'est après qu'il ne faut pas se tromper.
> Nom d'utilisateur : c'est le login que vous utiliserez
> Serveur : donnez l'alias localhost si MySQL est chargé sur la même machine que Apache, sinon fournissez l'IP du serveur distant
> Mot de passe : il ne faut pas le perdre sinon l'utilisateur en cours de création ne pourra plus se connecter à sa base avec les privilièges qui vont lui être attribués. Le Super User root du serveur MySQL pourra rectifier le tir si nécessaire, car il a pouvoir sur toutes les bases (sauf s'il a lui aussi perdu ses pass)

- Après ces champs apparaissent les privilèges globaux. Il ne faut absolument pas cocher la moindre case, car l'utilisateur doit se méler uniquement de sa base, et pas celle des autres,

- Généralement sauf indications techniques contraires, aucun quota n'est à prévoir. Vous pouvez donc tout laisser à zéro,

- Validez l'utilisateur en cliquant sur Exécuter. On a alors la requête suivante. Elle commence par la clé GRANT, d'où la nécessité de root d'avoir des privilèges et de ne pas donner ces derniers à n'importe qui.

GRANT USAGE ON * . * TO 'WebMaster'@'localhost' IDENTIFIED BY '*********' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0

- L'utilisateur est créé. En revenant sur la page "Privilège" de l'accueil, vous devez vous assurer que le nouvel utilisateur est USAGE et qu'il n'est pas "GRANT".

- Cliquez sur la petite icône à côté de la colonne "Grant" afin de modifier les attributs de l'utilisateur en question. Vous remarquez dans la section "Changer les privilèges" qu'il est possible de redéfinir les privilèges globaux de l'utilisateur.

- Dans la section "Privilèges spécifiques à une base de données", sélectionnez la base désirée. Vous changez automatiquement de page.

- La section s'intitule "Changer les privilèges", mais assurez-vous que le titre de la page ressemble à : Utilisateur 'WebMaster'@'localhost' - Base de données test. Il faut être conscient que ces privilèges concernent uniquement la base attribuée à l'utilisateur et non l'ensemble des bases du serveur MySQL. Vous pouvez cocher toutes les cases, même celles de l'administration. L'utilisateur pourra gérer sa table comme il le souhaitera: il pourra ajouter des utilisateurs à sa base, mais pas à l'ensemble des bases du serveur.

- Validez ensuite avec Exécuter. On a la requête suivante :

GRANT ALL PRIVILEGES ON 'test' . * TO 'WebMaster'@'localhost' WITH GRANT OPTION

- Revenez sur la page d'accueil et cliquez sur "Bases de données". En cliquant sur l'image associée à chacune des bases, vous pouvez vous assurer des droits donnés aux utilisateurs. Notamment, pour notre base "test", nous voyons:

root localhost global ALL PRIVILEGES Oui
WebMaster localhost spécifique à cette base de données ALL PRIVILEGES Oui

- La base "mysql" doit toujours être accessible que par root.

Voilà c'est terminé. Ce sera plus rapide avec de l'habitude...

Tanguy ALTERT, http://altert.family.free.fr/

A voir également
Ce document intitulé « Créer un utilisateur mysql avec des droits spécifiques sur une base particulière » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous