Er zijn hier drie problemen.
1 - Vergeet de SSH-tunnel voor nu
U kunt MySQL niet aan meer dan één specifiek IP-adres binden. Het eerste bind-address clausule wordt overschreven (daarom genegeerd) door de tweede. Je server luistert alleen naar 99.99.99.99 .
De reden waarom u verbinding kunt maken met -h localhost maar niet met -h 127.0.0.1 is dat je in de eerste vorm niet echt verbinding maakt via TCP/IP, maar via een lokale socket.
Kijk in uw my.cnf voor een socket clausule.
Verwijder één overbodig bind-address clausule. Misschien wilt u bind-address=0.0.0.0 . gebruiken , die MySQL-daemon instrueert om naar alles te luisteren netwerkinterfaces.
2 - Laten we uw SSH-tunnel instellen
De reden voor je fout ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 is mij niet duidelijk. Ik vermoed SSH-tunnel wordt eigenlijk alleen tot stand gebracht wanneer het een verbindingsverzoek ontvangt (in uw geval, wanneer u de mysql uitvoert cliënt). Aangezien uw server niet naar 127.0.0.1 luistert (zie vorige paragraaf), kan de SSH-tunnel niet tot stand worden gebracht, mislukt de verbinding en interpreteert uw client dit als een netwerkstoring.
3 - Waarom mysql -v -h localhost -P 9989 -u user userdb -p mislukt
Post de output van
[edit:zojuist toegevoegd ...OR host LIKE 'localhost' hieronder, omdat dit relevant kan zijn voor het oplossen van problemen]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(vervang 'user' , na de LIKE clausule, met de daadwerkelijke gebruikersnaam indien nodig)
MySQL-toegangscontrole controleert zowel de gebruikersnaam als het wachtwoord (user ) en de oorsprong van de verbinding (host ) om een gebruiker te identificeren. U heeft waarschijnlijk geen gebruiker 'user'@'localhost' . aangemaakt .
N.B.:mysql.com is op dit moment niet bereikbaar vanaf mijn locatie, dus ik kan niet linken naar de relevante man-pagina's.