![通过 ssh 隧道访问远程 mysql 服务器](https://linux22.com/image/537337/%E9%80%9A%E8%BF%87%20ssh%20%E9%9A%A7%E9%81%93%E8%AE%BF%E9%97%AE%E8%BF%9C%E7%A8%8B%20mysql%20%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我无法访问远程 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