Są tu trzy problemy.
1 - Zapomnij na razie o tunelu SSH
Nie możesz powiązać MySQL z więcej niż jednym konkretnym adresem IP.Pierwszy bind-address klauzula jest zastępowana (a zatem ignorowana) przez drugą. Twój serwer nasłuchuje tylko 99.99.99.99 .
Powód, dla którego możesz połączyć się z -h localhost ale nie z -h 127.0.0.1 polega na tym, że w pierwszej formie nie łączysz się przez TCP/IP, ale przez lokalne gniazdo.
Zajrzyj do swojego my.cnf dla socket klauzula.
Usuń jeden zbędny bind-address klauzula. Możesz użyć bind-address=0.0.0.0 , który instruuje demona MySQL, aby nasłuchiwał wszystkich interfejsy sieciowe.
2 - Skonfigurujmy Twój tunel SSH
Powód błędu ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 nie jest dla mnie oczywiste. podejrzewam Tunel SSH jest faktycznie ustanawiany tylko wtedy, gdy otrzyma żądanie połączenia (w twoim przypadku, gdy uruchomisz mysql klient). Ponieważ twój serwer nie nasłuchuje 127.0.0.1 (patrz poprzedni akapit), nie można ustanowić tunelu SSH, połączenie nie udaje się, a twój klient interpretuje to jako awarię sieci.
3 - Dlaczego mysql -v -h localhost -P 9989 -u user userdb -p nie udaje się
Opublikuj dane wyjściowe
[edit:właśnie dodano ...OR host LIKE 'localhost' poniżej, ponieważ może to być przydatne przy rozwiązywaniu problemów]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(zastąp 'user' , po LIKE klauzula, z rzeczywistą nazwą użytkownika, jeśli to konieczne)
Kontrola dostępu MySQL sprawdza zarówno nazwę użytkownika, jak i hasło (user ) i pochodzenie połączenia (host ) w celu identyfikacji użytkownika. Prawdopodobnie nie utworzyłeś użytkownika 'user'@'localhost' .
Uwaga:mysql.com jest obecnie nieosiągalny z mojej lokalizacji, nie mogę połączyć się z odpowiednimi stronami podręcznika.