| 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.5 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.5.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 : 
 La vérification d'identité est réalisée avec les trois colonnes de la table user ( Host , User et Password ). Le serveur accepte la connexion uniquement si une entrée dans la table user correspond à votre hôte, et que vous fournissez le mot de passe qui correspond.Les valeurs de la table user peuvent être paramétrées comme ceci : 
 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 : 
 Comme vous pouvez utiliser des caractères jokers dans les adresses IP de la colonne Host (par exemple, '144.155.166.%' pour identifier tout un sous-réseau), il est possible d'exploiter cette fonctionnalité en nommant un hôte 144.155.166.kekpart.com . Pour contrer de telles tentatives, MySQL interdit les caractères jokers avec les noms d'hôtes qui commencent par des chiffres ou des points. Par exemple, si vous avez un nom d'hôte tel que 1.2.foo.com , il ne sera jamais trouvé dans la colonne Host des tables de droits. Seule une adresse IP numérique peut être comparée avec un masque à caractère joker.Une connexion entrante peut être identifiée par plusieurs entrées dans la table user . MySQL résout ce problème comme ceci : 
 Supposons que votre table user ressemble à ceci : 
 
 
 
 Une erreur commune est de penser que pour un utilisateur donné, toutes les entrées qui utilisent explicitement ce nom seront utilisées en premier lorsque la connexion est en cours d'établissement. Ceci est tout simplement faux. L'exemple précédent illustre cette situation, car la connexion depuis l'hôte thomas.loc.gov avec jeffrey est la première ligne qui est trouvée, alors que la ligne contenant 'jeffrey' dans la colonne User est ignorée, car il n'y a pas de nom d'utilisateur.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 : 
 | 
| << | 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 |