通过 ssh 隧道访问远程 mysql 服务器

通过 ssh 隧道访问远程 mysql 服务器

我无法访问远程 mysql 服务器(设置为 skip-networking/no remote connections)。我已经能够成功创建 ssh 隧道,但是如何通过该隧道访问服务器的 mysql 套接字?

答案1

您需要某种 IP 方法来远程访问该 mysql 服务器,仅使用套接字就可以从本地计算机访问该 mysql 服务器。

最好的选择是激活网络但对 mysql 服务器进行防火墙保护,这样只能从本地主机访问,然后一旦你的隧道正常工作,就可以相当直接地通过 ssh 隧道进行远程连接,无论是直接从命令行ssh -L 3306:localhost:3306 user@server还是使用 .ssh/configLocalForward 3306 localhost:3306

答案2

如果 mysql 服务器配置为不允许网络连接,那么它将只与通过文件套接字连接的程序通信。您已创建以网络套接字结尾的管道 - 您需要创建一个桥接器来监听网络端口并连接到文件套接字。

我相信可以使用 netcat 来做到这一点 - 类似于.....

nc -U -l 3306 /var/lib/mysql/mysql.sock

...但请阅读手册并进行实验。

答案3

@Lynxman,当 mysql 使用 --skip-network 选项运行时,您无法使用 TCP 连接,因为它没有监听 3306 端口,并且只能使用套接字进行连接。

http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_skip-networking

symcbean@

Netcat 不起作用。从手册中我发现了以下内容。

创建并监听 Unix 域套接字:
$ nc -lU /var/tmp/dsocket

相关内容