Der er tre problemer her.
1 - Glem alt om SSH-tunnelen for nu
Du kan ikke binde MySQL til mere end én specifik IP. Den første bind-address
klausul tilsidesættes (derfor ignoreres) af den anden. Din server lytter kun til 99.99.99.99
.
Grunden til, at du kan oprette forbindelse til -h localhost
men ikke med -h 127.0.0.1
er, at i den første form forbinder du faktisk ikke via TCP/IP, men via en lokal socket.
Kig i din my.cnf
for en socket
klausul.
Fjern én overflødig bind-address
klausul. Du vil måske bruge bind-address=0.0.0.0
, som instruerer MySQL-dæmonen til at lytte til alle netværksgrænseflader.
2 - Lad os konfigurere din SSH-tunnel
Årsagen til din fejl ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
er ikke indlysende for mig. Jeg mistanker SSH-tunnel etableres faktisk kun, når den modtager en forbindelsesanmodning (i dit tilfælde, når du kører mysql
klient). Da din server ikke lytter til 127.0.0.1 (se forrige afsnit), kan SSH-tunnelen ikke etableres, forbindelsen mislykkes, og din klient fortolker det som en netværksfejl.
3 - Hvorfor mysql -v -h localhost -P 9989 -u user userdb -p
mislykkes
Send venligst output fra
[redigér:har lige tilføjet ...OR host LIKE 'localhost'
nedenfor, da dette kan være relevant til fejlfindingsformål]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';
(erstat 'user'
, efter LIKE
klausul, med det faktiske brugernavn, hvis det er nødvendigt)
MySQL adgangskontrol kontrollerer både brugernavn/adgangskode (user
) og oprindelsen af forbindelsen (host
) for at identificere en bruger. Du har sandsynligvis ikke oprettet en bruger 'user'@'localhost'
.
N.B.:da mysql.com ikke kan nås fra min placering på nuværende tidspunkt, kan jeg ikke linke til de relevante manualsider.