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.