Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conexão MySQL sobre túnel SSH


Há três questões aqui.

1 - Esqueça o túnel SSH por enquanto

Você não pode vincular o MySQL a mais de um IP específico. O primeiro bind-address cláusula é substituída (portanto, ignorada) pela segunda. Seu servidor só escuta 99.99.99.99 .

A razão pela qual você pode se conectar com -h localhost mas não com -h 127.0.0.1 é que na primeira forma, você não se conecta realmente através de TCP/IP, mas através de um soquete local.

Procure no seu my.cnf para um socket cláusula.

Remova um bind-address redundante cláusula. Você pode querer usar bind-address=0.0.0.0 , que instrui o daemon MySQL a ouvir todos interfaces de rede.

2 - Vamos configurar seu túnel SSH

O motivo do seu erro ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 não é óbvio para mim. Eu suspeito O túnel SSH é realmente estabelecido apenas quando recebe uma solicitação de conexão (no seu caso, quando você executa o mysql cliente). Como seu servidor não escuta 127.0.0.1 (veja o parágrafo anterior), o túnel SSH não pode ser estabelecido, a conexão falha e seu cliente interpreta como uma falha de rede.

3 - Por que mysql -v -h localhost -P 9989 -u user userdb -p falha

Por favor, poste a saída de

[editar:acabou de adicionar ...OR host LIKE 'localhost' abaixo, pois isso pode ser relevante para fins de solução de problemas]
mysql > SELECT user, host FROM mysql.user WHERE user LIKE 'user' OR host LIKE 'localhost';

(substitua 'user' , após o LIKE cláusula, com o nome de usuário real, se necessário)

O controle de acesso do MySQL verifica tanto o nome de usuário/senha (user ) e a origem da conexão (host ) para identificar um usuário. Você provavelmente não criou um usuário 'user'@'localhost' .

N.B.:mysql.com sendo inacessível da minha localização neste momento, não posso vincular às páginas de manual relevantes.