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 >>> |
5.4 Règles de sécurité et droits d'accès au serveur MySQL 5 Administration du serveur Manuel de Référence MySQL 4.1 : Version Française . 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 . Quand les modifications de privilèges prennent-ils effets ? . Causes des erreurs Access denied . Hashage de mots de passe en MySQL 4.1 |
5.4.5 Contrôle d'accès, étape 1 : Vérification de la connexion
Lorsque vous tentez de vous connecter au serveur MySQL, le serveur accepte ou rejette la connexion en fonction de votre identité et du mot de passe que vous fournissez. Si le mot de passe ne correspond pas à celui qui est en base, le serveur vous interdit complètement l'accès. Sinon, le serveur accepte votre connexion et passe à l'étape 2, et la gestion de commandes. Votre identité est basée sur trois informations :
Les valeurs de la table user peuvent être paramétrées comme ceci :
Comme vous pouvez utiliser des jokers dans les valeurs IP de Host (par exemple, '144.155.166.%' pour tous les hôtes d'un sous-réseau), il est possible d'exploiter cette possibilité en appelant un hôte 144.155.166.ailleurs.com . Pour contrer ce type d'attaque, MySQL bloque les noms de domaines qui commence par des chiffres et des points. Par conséquent, si vous avez un hôte nommé 1.2.foo.com , il ne sera jamais accepté par la colonne Host des tables de droits. Un caractère joker d'adresse IP peut remplacer uniquement des nombres d'IP, et pas un nom d'hôte. Dans la colonne User , les caractères joker ne sont pas autorisés, mais vous pouvez laisser cette valeur vide, qui acceptera tous les noms. Si la table user contient une connexion avec un nom d'utilisateur vide, l'utilisateur est considéré comme anonyme. Cela signifie que le nom d'utilisateur vide est utilisé pour les prochaines vérifications d'accès pour la durée de la connexion.Le champ Password peut être vide. Cela ne signifie pas que n'importe quel mot de passe est valable, mais que l'utilisateur peut se connecter sans fournir de mot de passe. Les valeurs non vides du champ Password représentent des valeurs du mot de passe chiffrées. MySQL ne stocke pas les mots de passe en clair, à la vue de tous. Au contraire, le mot de passe fourni pas l'utilisateur qui tente de se connecter est chiffré (avec la fonction PASSWORD() ). Le mot de passe ainsi chiffré est alors utilisé entre le client et le serveur pour vérifier s'il est valable. Cela évite que des mots de passe en clair circulent entre le client et le serveur, sur la connexion. Notez que du point de vue de MySQL, le mot de passe chiffré est le vrai mot de passe, ce qui fait que vous ne devez en aucun cas le donner à un tiers. En particulier, ne donnez pas accès en lecture aux utilisateurs normaux aux tables d'administration dans la base mysql ! A partir de sa version 4.1, MySQL utilise un mécanisme différent pour les logins, mots de passes qui est sécurisé même si les paquets TCP/IP sont sniffés et/ou que la base de données mysql est capturée.Depuis la version 4.1, MySQL emploie une identification forte qui protège mieux les mots de passe durant le processus de connexion. Cette méthode est sécuritaire, même si les paquets TCP/IP sont surveillés pour que la base de données mysql est capturée. Le chiffrement est présenté dans la section Chiffrement des mots de passe en MySQL 4.1 . Les exemples ci-dessous illustrent comment différentes variantes de Host et User dans la table user s'appliquent aux connexion entrantes :
Une connexion entrante peut être identifiée par plusieurs entrées dans la table user . MySQL résout ce problème comme ceci :
Voici un autre exemple. Supposons que la table user ressemble à ceci :
Si vous arrivez à vous connecter au serveur, mais que les droits ne sont pas ce que vous attendez, vous vous êtes probablement identifié avec un autre compte. Pour savoir quel compte le serveur utilise lors de votre identification, utilisez la fonction CURRENT_USER() . Elle retourne la valeur au format user_name@host_name qui indique les valeurs des colonne User et Host de la table user qui vous est affectée. Supposons que jeffrey se connecte et utilise la requête suivante :
La fonction CURRENT_USER() est disponible depuis MySQL 4.0.6. Fonctions d'informations . Une autre piste à explorer : imprimez le contenu de la table user et triez la manuellement pour voir quelle est la première ligne qui est utilisée. |
<< | Contrôle d'accès, étape 1 : Vérification de la connexion | >> |
Se connecter au serveur MySQL | Règles de sécurité et droits d'accès au serveur MySQL | Contrôle d'accès, étape 2 : Vérification de la requête |