Tutorial - Utilisateur MySQL

Transcription

Tutorial - Utilisateur MySQL
TITRE
Créer un utilisateur MySQL avec des droits spécifiques sur une base particulière
DESCRIPTION
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
PRIVILEGES Oui
WebMaster localhost
PRIVILEGES Oui
global
ALL
spécifique à cette base de données
ALL
- La base "mysql" doit toujours être accessible que par root.
Voilà c'est terminé. Ce sera plus rapide avec de l'habitude...
COPYRIGHT
© http://altert.family.free.fr/
Ce document est aussi hébergé sur :
http://www.codes-sources.com/