Hier gibt es drei Probleme.
1 - Vergiss den SSH-Tunnel vorerst
Sie können MySQL nicht an mehr als eine bestimmte IP binden. Die erste bind-address
-Klausel wird von der zweiten überschrieben (daher ignoriert). Ihr Server hört nur auf 99.99.99.99
.
Der Grund, warum Sie sich mit -h localhost
verbinden können aber nicht mit -h 127.0.0.1
ist, dass Sie sich in der ersten Form nicht wirklich über TCP/IP verbinden, sondern über einen lokalen Socket.
Schauen Sie in Ihre my.cnf
für eine socket
Klausel.
Entfernen Sie eine überflüssige bind-address
Klausel. Sie können bind-address=0.0.0.0
verwenden , der den MySQL-Daemon anweist, auf alle zu hören Netzwerkschnittstellen.
2 - Lassen Sie uns Ihren SSH-Tunnel einrichten
Der Grund für Ihren Fehler ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
ist für mich nicht ersichtlich. Ich vermute Der SSH-Tunnel wird tatsächlich nur aufgebaut, wenn er eine Verbindungsanfrage erhält (in Ihrem Fall, wenn Sie die mysql
Klient). Da Ihr Server 127.0.0.1 nicht abhört (siehe vorheriger Absatz), kann der SSH-Tunnel nicht aufgebaut werden, die Verbindung schlägt fehl und Ihr Client interpretiert dies als Netzwerkfehler.
3 - Warum mysql -v -h localhost -P 9989 -u user userdb -p
schlägt fehl
Bitte poste die Ausgabe von
[Bearbeiten:gerade hinzugefügt ...OR host LIKE 'localhost'
unten, da dies für die Fehlerbehebung relevant sein könnte]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(ersetzen Sie 'user'
, nach dem LIKE
-Klausel, ggf. mit dem tatsächlichen Benutzernamen)
Die MySQL-Zugriffskontrolle prüft sowohl den Benutzernamen als auch das Passwort (user
) und den Ursprung der Verbindung (host
) um einen Benutzer zu identifizieren. Wahrscheinlich haben Sie keinen Benutzer 'user'@'localhost'
erstellt .
N.B.:Da mysql.com derzeit von meinem Standort aus nicht erreichbar ist, kann ich keine Links zu den relevanten Handbuchseiten erstellen.