Depuis des mois, je me connecte à l'instance MySQL exécutée sur notre serveur de test local via un tunnel SSH sans aucun problème. Tout à coup, cependant, sans aucun changement auquel je peux penser, le serveur a commencé à rejeter la tentative de connexion de Sequel Pro avec l'erreur:
Impossible de se connecter à l'hôte 127.0.0.1 car l'accès a été refusé.
Vérifiez votre nom d'utilisateur et votre mot de passe et assurez-vous que l'accès à partir de votre emplacement actuel est autorisé.
MySQL a dit: Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)
Je peux me connecter depuis le terminal lorsqu'il est connecté directement au serveur via SSH, mais pas via un tunnel SSH. Le problème n'est pas spécifique à Sequel Pro ou à moi-même non plus, j'obtiens la même erreur lors de la connexion via MySQL Workbench que les autres au bureau. J'ai réinitialisé le mot de passe avec mysqladmin
juste pour la raison, ce n'est certainement pas le problème.
Quand j'ai commencé à approfondir mes recherches, j'ai remarqué que l'erreur signalait le serveur comme "localhost", au lieu de "127.0.0.1" que j'ai entré dans Sequel Pro. Un ami a suggéré que c'était probablement une mauvaise gestion des erreurs, mais cela semble étrange étant donné la différence significative entre localhost et 127.0.0.1 dans MySQL.
Pour contourner le problème de tunneling, j'ai accordé l'accès à root @%, afin de pouvoir me connecter directement. Cela fonctionne pour la plupart, je peux afficher les données de table, créer de nouvelles bases de données, etc. Le seul problème est que lorsque je viens de créer des utilisateurs, j'obtiens l'erreur:
Accès refusé pour l'utilisateur 'root' @ '%' (en utilisant le mot de passe: OUI)
Curieusement, l'utilisateur est réellement créé, je pense que c'est juste un problème de subvention. Encore une fois, depuis le terminal, je peux tout faire lorsque je suis connecté en tant que root.
Quelqu'un peut-il nous aider à comprendre pourquoi les connexions de tunnel et (probablement) les commandes d'accord reçoivent l'erreur d'accès refusé?
Pour référence, MySQ est la version 5.6.16 avec principalement les paramètres par défaut, installés via Homebrew sur une machine MAC OS X Server.
Mise à jour
Voici la liste des hôtes sur lesquels root est actuellement autorisé à accéder:
mysql> select host,user from mysql.user where user='root';
+----------------+------+
| host | user |
+----------------+------+
| % | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
+----------------+------+
4 rows in set (0.00 sec)
Si je comprends bien, la première ligne ("%") devrait vraiment rendre les autres redondantes?
Update 2
Correction du problème de subvention; l'utilisateur root @% n'a pas reçu tous les privilèges avec le supplément with grant option
à la fin, il pourrait donc tout faire sauf accorder. J'aimerais toujours savoir pourquoi les tunnels SSH sont refusés.