6.5 Droits sous MySQL

Les droits sont conservés dans les tables user, db, host, tables_priv et columns_priv de la base de données. Le serveur MySQL lis le contenu de ces tables au démarrage, et à chaque fois que c'est nécessaire, comme décrit dans la section 6.9 Prise en compte des modifications de droits.

Les noms utilisés dans ce manuel pour se référer aux droits de MySQL sont listés ci-dessous, avec le nom de la colonne associé à chaque droit dans la table de droits, et le contexte d'application du droit.

Les droits select, insert, update et delete permettent d'exécuter des opérations sur les lignes dans les tables existantes d'une base. Vous pouvez même exécuter certaines commandes SELECT sans avoir accès à aucune base sur le serveur. Par exemple, vous pouvez utiliser mysql comme une simple calculatrice :@:

mysql> SELECT 1+1;
mysql> SELECT PI()*2;

Le droit index vous permet de créer ou de détruire des index.

Le droit alter vous permet d'utiliser la commande ALTER TABLE.

Les droits create et drop vous permet de créer et détruire de nouvelles tables et bases.

Il faut bien remarquer que si vous donnez le droit de drop pour la base mysql , un utilisateur pourra effacer la table des droits MySQL!

Le droit grant vous permet de donner des droits que vous possédez à un autre utilisateur.

Le droit file vous permet de lire et écrire des fichiers sur le serveur, en utilisant les commandes LOAD DATA INFILE et SELECT ... INTO OUTFILE. Tout utilisateur qui dispose de ce droit peut écrire ou lire des fichiers que MySQL peut écrire ou lire.

Les autres droits sont utilisés pour les opérations administratives, qui sont disponibles avec mysqladmin. La table ci-dessous montre quelle droit donne accès à quelle commande mysqladmi:@:

La commande reload force le serveur à relire les tables de droits. La commande refresh vide toutes les tables de la mémoire, et ouvre puis ferme les fichiers d'historique. flush-privileges est un synonyme de reload. Les autres commandes flush-* exécutent des fonctions similaires à refresh mais ne sont pas aussi limitées, et parfois même, elles sont préférables. Par exemple, si vous souhaitez uniquement enregistrer les fichiers d'historique, flush-logs est mieux que refresh.

La commande shutdown éteint le serveur.

La commande processlist affiche la liste des threads courant du serveur. La commande kill arrête les threads du serveur. Vous pouvez toujours afficher et détruire les threads que vous possédez, mais vous devez avoir les droits de process pour afficher ou terminer les threads d'un autre utilisateur.

La meilleure stratégie est de ne donner des droits qu'à ceux qui en ont besoin, mais il faut être particulièrement prudents avec certains droits :@:

Il y a des limitations avec les droits MySQL:@: