我一直在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密码:根的mysql密码
使用SSH隧道: yes IP地址:我服务器的ip SSH用户名:我的名字 SSH密码:我的ssh密码
我不知道当我手动做它的时候,它为什么会在SSH上工作,但是当Navicat做它的时候,它不会工作,尽管它大概是在做同样的事情。'::1'的内容是什么,这是否指向了问题所在?
谢谢!
发布于 2018-08-29 18:11:58
实际上,MySQL中有三个微妙不同的根用户。(这是一种真正的痛苦,但它永远都是这样的,而且可能不会改变.)
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)只有在使用UNIX进行连接时,才会使用带有主机root的用户localhost。其他用户在通过TCP套接字连接时,分别通过IPv4或IPv6进行连接。
当您使用Navicat进行ssh端口转发时,将使用TCP套接字,特别是IPv6 TCP套接字(因为IPv6优于IPv4)。所以那个用户就是被认证的人。
我们中的大多数人都是通过确保所有三行的密码设置相同来处理这个问题的。
https://serverfault.com/questions/928568
复制相似问题