FAQ MySQLConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 155, dernière mise à jour : 22 avril 2014  Ajouter une question

 

Cette FAQ a été conçue à partir des questions fréquemment posées sur le forum MySQL de Developpez.com. Elle ne prétend pas à être exhaustive et peut contenir des erreurs occasionnelles. Si vous relevez une coquille, n'hésitez pas à nous le faire savoir.

Pour participer à cette FAQ, veuillez envoyer vos réponses sur le forum.


SommaireAdministrationProblèmes de connexion (7)
précédent sommaire suivant
 

Pour MySQL, un utilisateur n'est pas défini par son seul nom (username), mais par la combinaison entre ce nom et l'ordinateur depuis lequel l'utilisateur tente de se connecter. Autrement dit, le compte toto que vous utilisez sur le serveur n'est pas forcément le même que le compte toto utilisé depuis un client, qui peut avoir un autre mot de passe, d'autres privilèges, ou encore ne pas exister.

Cette spécificité de MySQL, qui permet de distinguer facilement des comptes locaux et distant (ou encore LAN et WAN), est très adaptée aux applications web. Par contre, elle peut surprendre l'utilisateur non averti, qui ne comprend pas que ses privilèges changent selon l'ordinateur d'où il est connecté.

Les questions-réponses suivantes vous permettront de mieux comprendre et utiliser ce système.

Mis à jour le 31 août 2008 Antoun

Bien sûr que non. Vous pouvez spécifier l'hôte de chaque utilisateur de différentes manières, avec le degré de souplesse voulu :

  • un nom d'ordinateur, ou bien localhost pour le serveur (par exemple PC12345 ou 'PC12345')
  • un nom d'ordinateur utilisant des jokers % ou _ (par exemple, 'PC123%')
  • une adresse IP (par exemple 192.168.22.40 ou '192.168.22.40')
  • une adresse IP incluante des jokers % ou _ (par exemple '192.168.%')
  • une adresse IP suivie d'un masque de réseau (par exemple '192.168.0.0/255.255.0.0')

Si vous ne connaissez pas le système des masques, notez simplement que les deux derniers exemples sont synonymes. Pour plus de précisions, cf http://dev.mysql.com/doc/refman/5.0/...on-access.html.

Mis à jour le 31 août 2008 Antoun

Il suffit de renommer le compte. Si par exemple vous voulez que le compte toto@'192.168.%' puisse être utilisé depuis n'importe quel ordinateur, vous pouvez le modifier ainsi :

Code sql : Sélectionner tout
RENAME USER toto@'192.168.%' TO toto@'%' ;

Mis à jour le 31 août 2008 Antoun

La requête suivante donne la liste des comptes utilisateurs, sous forme de combinaison username/host :

Code sql : Sélectionner tout
1
2
SELECT user, host 
FROM mysql.user;
Vous pouvez bien sûr la filtrer en ajoutant une clause WHERE, l'ordonner avec une clause ORDER BY, etc.

Mis à jour le 31 août 2008 Antoun

Vous ne pouvez pas choisir ou indiquer votre hôte. C'est MySQL qui le déterminera automatiquement, d'après le paramétrage réseau (voir cette question).

Mis à jour le 31 août 2008 Antoun

MySQL choisit le compte dont l'hôte est défini de la façon la plus spécifique. Par exemple, si vous avez trois comptes toto@localhost, toto@'192.168.%' et toto@'%', et que vous vous connectez en local depuis le serveur lui-même, votre hôte répond aux trois définitions (localhost, 192.168.% et % tout court). Comme localhost est la définition la plus spécifique (pas de joker), MySQL vous considèrera comme toto@localhost, avec le mot de passe et les privilèges prévus pour ce compte.

De la même manière, une adresse IP avec un joker est plus spécifique qu'un joker seul. Quand vous vous connecterez sur un autre poste du réseau local, vous serez donc toto@'192.168.%' plutôt que toto@'%'. Ce dernier compte ne sera utilisé que lorsque vous vous connecterez de l'extérieur.

Si vous souhaitez avoir les mêmes privilèges et le même mot de passe partout, il suffit de supprimer les comptes toto@localhost et toto@'192.168.%'. Vous serez alors toto@'%' quel que soit le poste d'où vous vous connectez.

La spécificité de l'hôte est prioritaire sur celle du nom d'utilisateur, ce qui peut causer un comportement inattendu quand il existe un compte anonyme sur un hôte spécifique. Voir la QR sur les comptes anonymes.

Mis à jour le 31 août 2008 Antoun

La fonction CURRENT_USER() vous donne le compte que vous utilisez, sous la forme username@host.

Ne confondez pas CURRENT_USER() avec USER(). Cette dernière fonction vous donne votre nom d'utilisateur et votre hôte réels (sans joker). Si par exemple vous vous connectez depuis MON_PC avec le compte toto@'192.168.%', CURRENT_USER() vous donnera toto@192.168.%, tandis que USER() vous donnera toto@MON_PC.

Mis à jour le 31 août 2008 Antoun

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique MySQL