通过 SSH 隧道连接到 MYSQL

Sco*_*t W 6 mysql ssh tunnel

我可以通过 ssh 连接到远程服务器并毫无问题地登录。

我正在尝试通过 ssh 隧道连接到远程 mysql 数据库并遇到问题。我已经成功创建了隧道(通过 telnet 验证)。当我尝试使用以下命令登录时:

mysql --host=127.0.0.1 -P 3302 -u fakeuser -p
Run Code Online (Sandbox Code Playgroud)

我得到

Access denied for user 'fakeuser'@'192.168.100.93'
Run Code Online (Sandbox Code Playgroud)

问题是@192.168.100.93。我相信我需要它是 fakeuser@localhost。既然我是通过 SSH 隧道连接的,为什么不将它设置为 localhost?我如何强制它到本地主机?它从哪里得到 192.168.100.93?

请注意,我无法更改 MySQL 服务器上的任何设置。

谢谢您的帮助!

Sha*_*tri 4

当您执行 ssh 隧道时,它会在您的系统与远程服务器之间进行加密通信,并将远程打开的端口绑定到您定义的端口。

ssh -L 33333:localhost:3306 fakeuser@server.remote.com

这里3306正如你所说的是mysql端口号。

使用 IPADDRESS 而不是 localhost 即 127.0.0.1

与 10.10.0.31 的连接已关闭。
linux@tuxworld:~$ ssh -fNg -L 33333:localhost:3306 root@10.10.0.31
root@10.10.0.31 的密码:
linux@tuxworld:~$

请参阅下面的示例,我不久前所做的,mysql 用户是 root,ssh 用户也是 root。我打开了一个新终端

linux@tuxworld:~$ mysql -u root -h 127.0.0.1 -P 33333
欢迎使用 MySQL 监视器。命令以 ; 结尾 或\g。
你的 MySQL 连接 ID 是 4
服务器版本:5.1.69 源码分发

版权所有 (c) 2000、2012,Oracle 和/或其附属公司。版权所有。

Oracle 是 Oracle Corporation 和/或其公司的注册商标
附属机构。其他名称可能是其各自的商标
拥有者。

输入“帮助”;或“\h”寻求帮助。键入“\c”以清除当前输入语句。

mysql> 退出
再见
linux@tuxworld:~$