| Rôle du système de privilèges <<< |
Comment fonctionne le système de droits | Droits fournis par 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.6 Comment fonctionne le système de droitsLe système de droits de MySQL s'assure que les utilisateurs font exactement ce qu'ils sont supporés pouvoir faire dans la base. Lorsque vous vous connectez au serveur, vous identitée est déterminée par l'hôte d'où vous vous connectez et le nom d'utilisateur que vous vous spécifiez . Le système donne les droits en fonction de votre identité et de ce que vous voulez faire . MySQL considère votre nom d'hôte et d'utilisateur pour vous identifier, car il n'y pas que peu de raisons de supposer que le même nom d'utilisateur appartient à la même personne, quelque soit son point de connexion sur Internet. Par exemple, l'utilisateur joe qui se connecte depuis office.com n'est pas forcément la même personne que joe qui se connecte depuis elsewhere.com . MySQL gère cela en vous aidant à distinguer les différents utilisateurs et hôtes qui ont le même nom : vous pourriez donner des droits à joe lorqu'il utilise sa connexion depuis office.com , et un autre jeu de droits lorsqu'il se connecte depuis elsewhere.com . Le contrôle d'accès de MySQL se fait en deux étapes :
Chaque table de droit contient des champs d'identification, et des champs de droits. Les champs d'identification détermine quels utilisateurs correspondent à cette ligne dans la table. Par exemple, une ligne dans la table user avec les valeurs dans les colonnes Host et User de 'thomas.loc.gov' et 'bob' servira à identifier les connexion qui sont faites par l'utilisateur bob depuis l'hôte thomas.loc.gov . De même, une ligne dans la table db avec les valeurs des colonnes Host , User et Db de 'thomas.loc.gov' , 'bob' et 'reports' sera utilisé lorsque l'utilisateur bob se connecte depuis l'hôte thomas.loc.gov pour accéder à la base reports . Les tables tables_priv et columns_priv contiennent en plus des champs indiquant les tables et combinaison tables et colonnes auquelles les lignes s'appliquent.Pour les contrôles d'accès, les comparaisons de nom d'hôte avec la colonne Host sont insensibles à la casse. Les colonnes User , Password , Db et Table_name sont sensibles à la casse. Les valeurs de la colonne Column_name sont insensibles à la casse pour les versions de MySQL 3.22.12 et plus récent. Les champs de droits indique si le droit est donné, c'est à dire si l'opération indiquée peut être exécuté. Le serveur combine les informations dans différentes tables pour former une description complète de l'utilisateur. Les règles utilisées sont décrites dans Contrôle d'accès, étape 2 : vérification des requêtes .Les champs d'identification sont des chaînes, déclarées comme suit. La valeur par défaut de chacun des champs est la chaîne vide.
Dans les tables user , db et host , tous les champs de droits sont déclarés avec le type ENUM('N','Y') : il peuvent prendre tous les valeurs de 'N' (non) ou 'Y' (oui, YES), et la valeur par défaut est 'N' . Dans les tables tables_priv et columns_priv , les champs de droits sont déclarés comme des champs de type SET :
Le droit de FILE est spécifié par la table user . Ce n'est pas un droit d'administration, mais votre capacité à lire ou écrire des fichier sur le serveur hôte est dépendant de la base à laquelle vous accédez. Le serveur mysqld lit le contenu des tables de droits une fois, au démarrage. Lorsqu'il y a des modifications dans les tables, elles prennent effet tel qu'indiqué dans Quand les changements de privilèges prennent-ils effet ? .Lorsque vous modifiez le contenu des tables de droits, c'est une bonne idée que de s'assurer que vous avez bien configuré les droits qui vous interessent. Pour vous aider dans votre diagnostique, voyez Causes possibles de l'erreur Access denied . Pour des conseils sur les aspects sécurité, voyez Comment protéger MySQL contre les pirates . Un outil de diagnostique pratique est le script mysqlaccess , que Yves Carlier a fournit à la distributio MySQL. Appelez mysqlaccess avec l'option the --help pour comprendre comment il fonctionne. Notez que mysqlaccess ne vérifie les accès que pour les tables user , db et host . Il n'utilise pas les tables de droit de niveau table ou colonne. |
| << | Comment fonctionne le système de droits | >> |
| Rôle du système de privilèges | Règles de sécurité et droits d'accès au serveur MySQL | Droits fournis par MySQL |