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.