Det finns tre frågor här.
1 - Glöm SSH-tunneln tills vidare
Du kan inte binda MySQL till mer än en specifik IP. Den första bind-address sats åsidosätts (därför ignoreras) av den andra. Din server lyssnar bara på 99.99.99.99 .
Anledningen till att du kan ansluta till -h localhost men inte med -h 127.0.0.1 är att i den första formen ansluter du faktiskt inte via TCP/IP, utan genom ett lokalt uttag.
Titta i din my.cnf för en socket klausul.
Ta bort en redundant bind-address klausul. Du kanske vill använda bind-address=0.0.0.0 , som instruerar MySQL-demonen att lyssna på alla nätverksgränssnitt.
2 - Låt oss ställa in din SSH-tunnel
Anledningen till ditt fel ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 är inte självklart för mig. Jag misstänker SSH-tunneln upprättas faktiskt bara när den tar emot en anslutningsbegäran (i ditt fall när du kör mysql klient). Eftersom din server inte lyssnar på 127.0.0.1 (se föregående stycke) kan SSH-tunneln inte upprättas, anslutningen misslyckas och din klient tolkar det som ett nätverksfel.
3 - Varför mysql -v -h localhost -P 9989 -u user userdb -p misslyckas
Vänligen posta resultatet av
[redigera:har precis lagt till ...OR host LIKE 'localhost' nedan, eftersom detta kan vara relevant för felsökningsändamål]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(ersätt 'user' , efter LIKE klausul, med det faktiska användarnamnet om det behövs)
MySQL-åtkomstkontroll kontrollerar både användarnamn/lösenord (user ) och ursprunget för anslutningen (host ) för att identifiera en användare. Du skapade förmodligen inte en användare 'user'@'localhost' .
OBS:eftersom mysql.com inte kan nås från min plats just nu kan jag inte länka till relevanta manualsidor.