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.