Siempre he usado Navicat en Windows para administrar mis instancias de MySQL/Percona.
Hace unos días compré un nuevo servidor e instalé MariaDB 10.3.9.
Puedo conectarme bien cuando estoy en una sesión de PuTTY mediante SSH en la caja. mysql -u root -p
lo plantea perfectamente.
Sin embargo, por alguna razón, Navicat arroja el erroraccess denied for user 'root'@'::1' (using password: YES)
La configuración de Navicat es la misma que siempre he usado antes:
Nombre de host: localhost Puerto: 3306 Nombre de usuario de Mysql: root Contraseña de Mysql: [contraseña de mysql de root]
Usar túnel SSH: sí Dirección IP: [ip de mi servidor] Nombre de usuario SSH: [mi nombre] Contraseña SSH: [mi contraseña ssh]
No estoy seguro de por qué funcionaría a través de SSH cuando lo hago manualmente, pero no cuando lo hace Navicat, aunque presumiblemente esté haciendo prácticamente lo mismo. ¿De qué '::1'
se trata? ¿Eso apunta al problema?
¡Gracias!
Respuesta1
En realidad haytresusuarios raíz sutilmente diferentes en MySQL. (Lo cual es una verdadera molestia, pero ha sido así desde siempre y probablemente no cambiará...)
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)
El usuario root
con host localhost
solo se utiliza cuando se conecta mediante el socket UNIX. Los demás usuarios se utilizan cuando se conectan a través del socket TCP, a través de IPv4 o IPv6 respectivamente.
Cuando realiza el reenvío de puertos ssh con Navicat, se utiliza el socket TCP, y específicamente el socket TCP IPv6 (ya que se prefiere IPv6 a IPv4). Entonces ese usuario es contra quien se autentica.
La mayoría de nosotros lidiamos con esto asegurándonos de que la contraseña sea la misma para las tres filas.