我一直在 Windows 上使用 Navicat 来管理我的 MySQL/Percona 实例。
几天前我买了一台新服务器并安装了 MariaDB 10.3.9。
当我在一个腻子会话中 SSHd 进入盒子时,我可以很好地连接到它。 mysql -u root -p
完美地提出来。
但出于某种原因,Navicat 抛出错误access denied for user 'root'@'::1' (using password: YES)
Navicat 的设置和我之前一直使用的一样:
主机名:localhost 端口:3306 mysql用户名:root mysql密码:[root的mysql密码]
使用 SSH 隧道:是 IP 地址:[我的服务器的 ip] SSH 用户名:[我的名字] SSH 密码:[我的 ssh 密码]
我不确定为什么当我手动执行它时它会在 SSH 上工作,但当 Navicat 执行它时却不是,即使它可能在很大程度上做同样的事情。这是什么意思'::1'
,这是否表明问题所在?
谢谢!
实际上,在 MySQL 中有三个微妙不同的 root 用户。(这是一个真正的痛苦,但它一直是这样,可能不会改变......)
只有在使用 UNIX 套接字进行连接时,才会使用
root
带有 host的用户。localhost
其他用户分别通过 TCP 套接字、IPv4 或 IPv6 连接时使用。当你使用 Navicat 进行 ssh 端口转发时,会使用 TCP 套接字,特别是 IPv6 TCP 套接字(因为 IPv6 优于 IPv4)。因此,该用户是被验证的用户。
我们大多数人通过确保所有三行的密码设置相同来处理这个问题。