Les droits des utilisateurs sont stockés dans les tables
user
, db
,
host
, tables_priv
et
columns_priv
de la base
mysql
(c'est-à-dire, la base nommée
mysql
). Le serveur MySQL lit ces tables au
démarrage, et dans les circonstances indiquées dans la section
Section 5.5.7, « Quand les modifications de privilèges prennent-ils effets ? ».
Les noms utilisés dans ce manuel font référence aux droits
fournis par MySQL version 4.0.2, tel que présentés dans la
table ci-dessous, avec le nom de la colonne associée au droit,
dans la table de droits, et dans le contexte d'application. Plus
d'informations sur la signification de chaque droit sont
disponibles à Section 13.5.1.3, « Syntaxe de GRANT
et REVOKE
».
Droit | Colonne | Contexte |
ALTER |
Alter_priv |
tables |
DELETE |
Delete_priv |
tables |
INDEX |
Index_priv |
tables |
INSERT |
Insert_priv |
tables |
SELECT |
Select_priv |
tables |
UPDATE |
Update_priv |
tables |
CREATE |
Create_priv |
bases de données, tables ou index |
DROP |
Drop_priv |
bases de données ou tables |
GRANT |
Grant_priv |
bases de données ou tables |
REFERENCES |
References_priv |
bases de données ou tables |
CREATE TEMPORARY TABLES |
Create_tmp_table_priv |
administration du serveur |
EXECUTE |
Execute_priv |
administration du serveur |
FILE |
File_priv |
accès aux fichiers du serveur |
LOCK TABLES |
Lock_tables_priv |
administration du serveur |
PROCESS |
Process_priv |
administration du serveur |
RELOAD |
Reload_priv |
administration du serveur |
REPLICATION CLIENT |
Repl_client_priv |
administration du serveur |
REPLICATION SLAVE |
Repl_slave_priv |
administration du serveur |
SHOW DATABASES |
Show_db_priv |
administration du serveur |
SHUTDOWN |
Shutdown_priv |
administration du serveur |
SUPER |
Super_priv |
administration du serveur |
Les droits de SELECT
,
INSERT
, UPDATE
et
DELETE
vous permettent de faire des
opérations sur les lignes qui existent, dans une table
existante d'une base.
La commande SELECT
requiert le droit de
SELECT
uniquement si des lignes sont lues
dans une une table. Vous pouvez exéctuer une commande
SELECT
même sans aucun droit d'accès à une
base de données dans le serveur. Par exemple, vous pourriez
utiliser le client mysql
comme une simple
calculatrice :
mysql>SELECT 1+1;
mysql>SELECT PI()*2;
Le droit de INDEX
vous donne le droit de
créer et détruire des index de table.
Le droit de ALTER
vous donne le droit de
modifier une table avec la commande ALTER
TABLE
.
Les droits de CREATE
et
DROP
vous permettent de créer de nouvelles
tables et bases de données, et de les supprimer.
Notez que si vous donnez le droit de DROP
pour la base de données mysql
à un
utilisateur, cet utilisateur pourra détruire la base qui
contient les droits d'accès du serveur !
Le droit de GRANT
vous permet de donner les
droits que vous possédez à d'autres utilisateurs.
Le droit de FILE
vous donne la possibilité
de lire et écrire des fichiers sur le serveur avec les
commandes LOAD DATA INFILE
et SELECT
... INTO OUTFILE
. Tout utilisateur qui possède ce
droit peut donc lire ou écrire dans n'importe quel fichier à
l'intérieur duquel le serveur MySQL peut lire ou écrire.
Les autres droits sont utilisés pour les opérations
administratives qui sont exécutées par l'utilitaire
mysqladmin
. La table ci-dessous montre quelle
commande est associée à mysqladmin
avec un
de ces droits :
Droit | Commande autorisée |
RELOAD |
reload , refresh ,
flush-privileges ,
flush-hosts ,
flush-logs et
flush-tables
|
SHUTDOWN |
shutdown |
PROCESS |
processlist |
SUPER |
kill |
La commande reload
indique au serveur de
relire les tables de droits. La commande
refresh
vide les tables de la mémoire,
écrit les données et ferme le fichier de log.
flush-privileges
est un synonyme de
reload
. Les autres commandes
flush-*
effectuent des fonctions similaires
à la commande refresh
mais sont plus
limitées dans leur application, et sont préférables dans
certains contextes. Par exemple, si vous souhaitez simplement
vider les tampons dans le fichier de log, utilisez
flush-logs
, qui est un meilleur choix que
refresh
.
La commande shutdown
éteint le serveur.
La commande processlist
affiche les
informations sur les threads qui s'exécutent sur le serveur. La
commande kill
termine un des threads du
serveur. Vous pouvez toujours afficher et terminer vos propres
threads, mais vous aurez besoin des droits de
PROCESS
pour afficher les threads, et le
droit de SUPER
pour terminer ceux qui ont
été démarrés par d'autres utilisateurs. See
Section 13.5.4.3, « Syntaxe de KILL
».
C'est une bonne idée en général, de ne donner les droits de Grant qu'aux utilisateurs qui en ont besoin, et vous devriez être particulièrement vigilant pour donner certains droits :
Le droit de GRANT
permet aux utilisateurs
de donner leurs droits à d'autres utilisateurs. Deux
utilisateurs avec des droits différents et celui de
GRANT
pourront combiner leurs droits
respectifs pour gagner un autre niveau d'utilisation du
serveur.
Le droit de ALTER
peut être utilisé
pour tromper le système en renommant les tables.
Le droit de FILE
peut servir à lire des
fichiers accessibles à tous sur le serveur, et les placer
dans une base de données. Le contenu pourra alors être lu
et manipulé avec SELECT
. Cela inclus le
contenu de toutes les bases actuellement hébergées sur le
serveur !
Le droit de SHUTDOWN
peut conduire au
dénis de service, en arrêtant le serveur.
Le droit de PROCESS
permet de voir en
texte clair les commandes qui s'exécutent actuellement, et
notamment les changements de mot de passe.
Le droit de SUPER
peut être utilisé
pour terminer les connexions ou modifier le mode opératoire
du serveur.
Les droits sur la base de données mysql
peuvent être utilisés pour changer des mots de passe ou
des droits dans la table des droits (Les mots de passe sont
stockés chiffrés, ce qui évite que les intrus ne les
lisent). S'ils accèdent à un mot de passe dans la table
mysql.user
, ils pourront l'utiliser pour
se connecter au serveur avec cet utilisateur (avec des
droits suffisants, le même utilisateur pourra alors
remplacer un mot de passe par un autre).
Il y a des choses qui ne sont pas possibles avec le système de droits de MySQL :
Vous ne pouvez pas explicitement interdire l'accès à un utilisateur spécifique. C'est à dire, vous ne pouvez pas explicitement décrire un utilisateur et lui refuser la connexion.
Vous ne pouvez pas spécifier qu'un utilisateur a les droits de créer et de supprimer des tables dans une base, mais qu'il n'a pas les droits pour créer et supprimer cette base.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.