2017-01-13 1 views
0

J'ai créé l'utilisateur 'demo' et accordé des privilèges pour 'demo' @ '%'. Je peux me connecter depuis un serveur distant, mais lorsque je tente de se connecter depuis localhost, je reçois une erreur:L'utilisateur Mysql avec des privilèges pour se connecter à partir de '%' ne peut pas se connecter depuis 'localhost'

Access denied for user '[email protected]'%''@'localhost' (using password: YES)

Il est assez étrange pour moi, puisque « % », selon la documentation, doit correspondre à une adresse IP. La solution évidente est de créer un deuxième ensemble de privilèges pour 'demo' @ 'localhost', mais je me demande si cela est conçu pour fonctionner de cette façon? Ou cela a-t-il quelque chose à voir avec la façon dont le client mysql essaie de se connecter à DB? (interface réseau de bouclage par rapport à l'interface réseau réelle). Puis-je me connecter à partir du client mysql en tant que 'démo' @ '%' à partir de la même machine?

--edit--

Il a été suggéré que ma question est la même que celle Are Users 'User'@'%' and 'User'@'localhost' not the same?, cependant, ce n'est pas le cas, parce que les états de réponse acceptés:

[email protected]% would allow access from all locations.

dans mon Dans le cas actuel, l'utilisateur @% autoriserait l'accès à partir de tous les emplacements sauf localhost. Parce que la réponse vient de 2012, et en attendant nous avons branche à MariaDB, je donne l'information exacte version:

D:\xampp\mysql\bin>mysql --version mysql Ver 15.1 Distrib 
10.1.16-MariaDB, for Win32 (AMD64) 
+0

@Benjamin oui et maintenant, la question pourrait être différente, mais la réponse acceptée n'est pas une réponse à ma question. La réponse indique que le '%' signifie tout emplacement, y compris localhost, ce qui ne semble pas être le cas ici ... –

+0

''user' @ '%'' signifie 'user' de tous les hôtes. peut-être utilisez-vous un mauvais nom d'utilisateur/mot de passe comme 'demo_' pour' demo'. ou vous avez déjà un autre utilisateur '' demo '@' localhost'' avec un autre privilège. – bansi

+0

@bansi non, j'ai utilisé le même nom d'utilisateur et mot de passe et aucun utilisateur de demo @ localhost, simplement '%' ne correspond pas à 'localhost'. Mais il y avait des détails manquants, j'utilise en fait MariaDB du paquet XAMPP, cela peut changer beaucoup de choses ... –

Répondre

0

Essayez d'ajouter l'option skip-name-resolve à la section mysqld dans my.cnf. Peut-être y at-il vraiment un problème de résolution de/à "localhost". Avec cette option, le serveur utilise uniquement les adresses IP.