为什么我的服务器上的 mysql 端口转发无法运行?

为什么我的服务器上的 mysql 端口转发无法运行?

我有一个 mysql 服务器运行在我们网络中的某个服务器上。现在,服务器只接受来自 localhost 的连接,我无法远程连接到它。现在,我想设置端口转发,使用 ssh 来在该服务器上使用一些 GUI 工具。但是,当我通过隧道连接时,不知何故我无法获得身份验证!它如下所示:

在远程计算机上:

mysql -u exporter --password=test -h localhost -P 3306 mydatabase

一切都运行正常并且我得到了一个连接的 mysql shell。

现在,在我的本地机器上设置端口转发:

ssh remotemachine -L127.0.0.1:33066:127.0.0.1:3306

要使用此隧道在本地机器上连接到远程 mysql 服务器,我执行以下操作:

mysql -u exporter --password=test -h localhost -P 33066 mydatabase

这是我收到的错误:

ERROR 1045 (28000): Access denied for user 'exporter'@'localhost' (using password: YES)

这怎么可能呢?我该怎么办?注意:这个问题在另一台远程机器上的另一个 mysql 服务器上完全可以重现。

答案1

你尝试过使用吗

ssh -L 33066:localhost:3306 remotemachine

请确保在 mysql 权限系统内部,127.0.0.1 和 localhost 都是数据库用户的允许源。

答案2

今天我自己也尝试做同样的事情,发现当你连接到 localhost/127.0.0.1 时,客户端会自动尝试通过本地套接字而不是普通的 tcp/ip 连接来连接到该进程,从而避免了 ssh 隧道。

您必须使用本地网络地址(例如:192.168.0.35)而不是环回设备地址(127.0.0.1)。

您还需要在 ssh 命令行中添加 -g 参数,以使该端口转发可通过非环回设备地址 192.168.0.35:3306 访问,否则只能通过 127.0.0.1:3306 访问

答案3

转载此文回答

我遇到了类似的问题,并且根据这个StackOverflow 答案,解决方案是删除“任何”用户。

看来 MySQL 看到了通过 localhost 和 127.0.0.1 连接的用户之间的差异,如果我理解正确的话,这是问题的一部分。


相关内容