Sempre usei o Navicat no Windows para gerenciar minhas instâncias MySQL/Percona.
Há poucos dias comprei um novo servidor e instalei o MariaDB 10.3.9.
Posso me conectar a ele sem problemas quando estou em uma sessão SSHd do PuTTY na caixa. mysql -u root -p
traz isso perfeitamente.
Por alguma razão, porém, Navicat gera o erroaccess denied for user 'root'@'::1' (using password: YES)
As configurações do Navicat são as mesmas que sempre usei antes:
Nome do host: localhost Porta: 3306 Nome de usuário MySQL: root Senha MySQL: [senha mysql do root]
Usar túnel SSH: sim Endereço IP: [ip do meu servidor] Nome de usuário SSH: [meu nome] Senha SSH: [minha senha ssh]
Não sei por que funcionaria no SSH quando eu faço isso manualmente, mas não quando o Navicat faz isso, embora presumivelmente esteja fazendo basicamente a mesma coisa. Qual é o '::1'
problema, isso aponta para o problema?
Obrigado!
Responder1
Na verdade existemtrêsusuários root sutilmente diferentes no MySQL. (O que é uma verdadeira dor, mas tem sido assim desde 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 apenas ao conectar-se usando o soquete UNIX. Os outros usuários são usados na conexão via soquete TCP, via IPv4 ou IPv6 respectivamente.
Quando você faz o encaminhamento de porta ssh com Navicat, o soquete TCP é usado e, especificamente, o soquete TCP IPv6 (já que o IPv6 é preferível ao IPv4). Portanto, esse usuário é aquele que está sendo autenticado.
A maioria de nós lida com isso certificando-se de que a senha seja definida da mesma forma para todas as três linhas.