L'hôte 'xxx.xx.xxx.xxx&#39 ; n'est pas autorisé à se connecter à ce serveur MySQL.

Cela devrait être très simple, mais je n'arrive pas à le faire fonctionner.
J'essaie simplement de me connecter à distance à mon serveur MySQL.

Je me connecte en tant que

mysql -u root -h localhost -p  

fonctionne bien, mais en essayant

mysql -u root -h 'any ip address here' -p

échoue avec l'erreur

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

Dans la table mysql.user, il y a exactement la même entrée pour l'utilisateur 'root&#39 ; avec l'hôte 'localhost&#39 ; qu'une autre avec l'hôte '%&#39 ;.

Je suis à bout de nerfs et je n'ai aucune idée de la marche à suivre. Toute idée est la bienvenue.

Solution

Peut-être une précaution de sécurité. Vous pouvez essayer d'ajouter un nouveau compte administrateur :

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Bien que, comme Pascal et d'autres l'ont noté, ce n'est pas une bonne idée d'avoir un utilisateur avec ce type d'accès ouvert à n'importe quelle IP. Si vous avez besoin d'un utilisateur administratif, utilisez root, et laissez-le sur localhost. Pour toute autre action, spécifiez exactement les privilèges dont vous avez besoin et limitez l'accessibilité de l'utilisateur comme Pascal l'a suggéré ci-dessous.

Modifier :

Extrait de la FAQ MySQL :

Si vous ne pouvez pas comprendre pourquoi vous obtenez Accès refusé, supprimez de la table utilisateur supprimez de la table des utilisateurs toutes les entrées dont les valeurs Host contenant des caractères génériques (entrées qui contiennent des caractères '%&#39 ; ou '_&#39 ;). A erreur très fréquente consiste à insérer une nouvelle entrée avec Host='%&#39 ; et User='some_user&#39 ;, en pensant que ceci vous permet de spécifier localhost pour se connecter à partir de la même machine. Le site raison pour laquelle cela ne fonctionne pas est que les privilèges par défaut incluent une entrée avec Host='localhost&#39 ; et User='&#39 ;. Parce que cette entrée a une valeur Host valeur 'localhost&#39 ; qui est plus spécifique que '%&#39 ;, elle est utilisée en préférence à la nouvelle entrée lorsque se connectant à partir de localhost ! La procédure correcte procédure correcte est d'insérer une deuxième entrée avec Host='localhost&#39 ; et User='some_user&#39 ;, ou de supprimer l'entrée entrée > avec Host='localhost&#39 ; et User='&#39 ;. Après avoir supprimé l'entrée, n'oubliez pas de lancer une instruction FLUSH PRIVILEGES pour recharger les tables d'attribution. Voir également la Section 5.4.4, " Contrôle d'accès, étape 1 : contrôle des accès ". Contrôle d'accès, Étape 1 : Connexion Vérification".

Commentaires (8)

Le message *Host ''xxx.xx.xxx.xxx'&#39 ; n'est pas autorisé à se connecter à ce serveur MySQL est une réponse du serveur MySQL au client MySQL. Remarquez qu'il renvoie l'adresse IP et non le nom d'hôte.

Si vous essayez de vous connecter avec mysql -h -u -p et qu'il renvoie ce message avec l'adresse IP, alors le serveur MySQL n'est pas en mesure de faire une recherche inversée sur le client. C'est essentiel car c'est ainsi que le client MySQL est relié aux subventions.

Assurez-vous que vous pouvez faire un nslookup DU serveur MySQL. Si cela ne fonctionne pas, c'est qu'il n'y a pas d'entrée dans le serveur DNS. Sinon, vous pouvez mettre une entrée dans le fichier HOSTS du serveur MySQL (` `

Commentaires (1)

Si vous modifiez les tables de concession manuellement (en utilisant INSERT, UPDATE, etc.), vous devez exécuter une instruction FLUSH PRIVILEGES pour demander au serveur de recharger les tables d'attribution.

PS : Je ne recommanderais pas de permettre à n'importe quel hôte de se connecter pour n'importe quel utilisateur (surtout pas l'utilisation de root). Si vous utilisez mysql pour une application client/serveur, préférez une adresse de sous-réseau. Si vous utilisez mysql avec un serveur web ou un serveur d'application, utilisez des IPs spécifiques.

Commentaires (0)