Por que não consigo me conectar ao MariaDB com o Navicat através do túnel SSH?

1

Eu sempre usei o Navicat no Windows para gerenciar minhas instâncias MySQL / Percona.

Alguns dias atrás eu comprei um novo servidor e instalei o MariaDB 10.3.9.

Eu posso me conectar a ele bem quando estou em uma sessão de putty SSHd na caixa. mysql -u root -p traz isso à perfeição.

Por alguma razão, porém, o Navicat lança o erro access denied for user 'root'@'::1' (using password: YES)

As configurações da Navicat são as mesmas que eu sempre usei antes:

Nome do host: localhost Porta: 3306 Nome de usuário do Mysql: root Senha do Mysql: [senha do mysql do root]

Use o túnel SSH: sim Endereço IP: [ip do meu servidor] Nome de usuário do SSH: [meu nome] Senha SSH: [minha senha ssh]

Não sei por que funcionaria com o SSH quando faço isso manualmente, mas não quando a Navicat faz isso, mesmo presumivelmente fazendo a mesma coisa. Qual é o '::1' , isso aponta para o problema?

Obrigado!

    
por Codemonkey 29.08.2018 / 18:11

1 resposta

2

Na verdade, existem três usuários-raiz sutilmente diferentes no MySQL. (Que é uma dor real, mas tem sido assim para sempre e provavelmente não vai mudar ...)

MariaDB [(none)]> select Host, User from mysql.user where User = 'root';
+-----------+------+
| Host      | User |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| localhost | root |
+-----------+------+
3 rows in set (0.06 sec)

O usuário root com host localhost é usado somente ao conectar usando o soquete UNIX. Os outros usuários são usados ao se conectar via soquete TCP, via IPv4 ou IPv6, respectivamente.

Quando você faz o encaminhamento de porta ssh com o Navicat, o soquete TCP é usado e, especificamente, o soquete TCP do IPv6 (como IPv6 é preferível ao IPv4). Então esse usuário é aquele que está sendo autenticado.

A maioria de nós lida com isso garantindo que a senha seja definida da mesma forma para as três linhas.

    
por 29.08.2018 / 20:11