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.