Services webmasters
Partenaires
Jeux concours gratuits
 
Comment fonctionne le système de droits
<<<
Droits fournis par MySQL Se connecter au serveur MySQL
>>>

4.2 Règles de sécurité et droits d'accès au serveur MySQL
4 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Instructions générales de sécurité
Comment protéger MySQL contre les pirates
Options de démarrage qui concernent la sécurité
Problèmes de sécurité avec LOAD DATA LOCAL
Rôle du système de privilèges
Comment fonctionne le système de droits
->Droits fournis par MySQL
Se connecter au serveur MySQL
Contrôle d'accès, étape 1 : Vérification de la connexion
Contrôle d'accès, étape 2 : Vérification de la requête
Causes des erreurs Access denied

4.2.7 Droits fournis par MySQL

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 Quand les changements de privilèges prennent-ils effet ? .

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 :

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. 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.
  • 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.

<< Droits fournis par MySQL >>
Comment fonctionne le système de droits Règles de sécurité et droits d'accès au serveur MySQL Se connecter au serveur MySQL
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -