Mysql
 sql >> Database >  >> RDS >> Mysql

Connessione MySQL tramite tunnel SSH

Ci sono tre problemi qui.

1 - Dimentica per ora il tunnel SSH

Non puoi associare MySQL a più di un IP specifico. Il primo bind-address clausola viene sovrascritta (quindi ignorata) dalla seconda. Il tuo server ascolta solo 99.99.99.99 .

Il motivo per cui puoi connetterti con -h localhost ma non con -h 127.0.0.1 è che nella prima forma, non ti connetti effettivamente tramite TCP/IP, ma tramite un socket locale.

Cerca nel tuo my.cnf per un socket clausola.

Rimuovi un bind-address ridondante clausola. Potresti voler utilizzare bind-address=0.0.0.0 , che indica al demone MySQL di ascoltare tutti interfacce di rete.

2 - configuriamo il tuo tunnel SSH

Il motivo dell'errore ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 non è ovvio per me. sospetto Il tunnel SSH viene effettivamente stabilito solo quando riceve una richiesta di connessione (nel tuo caso, quando esegui mysql cliente). Poiché il tuo server non ascolta 127.0.0.1 (vedi paragrafo precedente), non è possibile stabilire il tunnel SSH, la connessione non riesce e il tuo client lo interpreta come un errore di rete.

3 - Perché mysql -v -h localhost -P 9989 -u user userdb -p fallisce

Si prega di inviare l'output di

[modifica:appena aggiunto ...OR host LIKE 'localhost' di seguito, poiché potrebbe essere rilevante ai fini della risoluzione dei problemi]

mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';

(sostituisci 'user' , dopo il LIKE clausola, con il nome utente effettivo se necessario)

Il controllo di accesso MySQL controlla sia il nome utente che la password (user ) e l'origine della connessione (host ) per identificare un utente. Probabilmente non hai creato un utente 'user'@'localhost' .

NB:mysql.com non essendo raggiungibile dalla mia posizione in questo momento, non posso collegarmi alle pagine di manuale pertinenti.