我正在处理客户的一个网站,他通过 1and1 进行托管。他们不允许从任何地方直接连接到他们的 mySQL 服务器。例如,我无法在 Windows 上加载 mySQL GUI,然后连接并处理数据库,系统提示主机未找到。另一方面,他的托管帐户被授予访问 mySQL 服务器的权限,即使它位于不同的位置。假设这些是我正在使用的服务器:
他的主要主持:
地址:thehost.com
用户名:joe
他的 mySQL 服务器:
地址:mysqlserver.com
端口:3306
数据库:thedata
用户:dbouser
他的主托管帐户带有 SSH。因此,如果我通过 SSH 进入 thehost.com 的端口 22,然后使用 mysql 命令连接到 mysqlserver.com,它就可以正常工作。我曾尝试设置 SSH 隧道,但问题是允许 SSH 的不是 mySQL 服务器,而是主托管。如何在 Mac 和 Windows 计算机上设置 SSH 隧道,以便我可以运行我想要的任何 GUI,并且我将能够连接到 mysqlserver.com 服务器。所有信息均基于上述信息,即 SSH 访问仅限于 thehost.com,并且 thehost.com 本身可以连接到 mysqlserver.com。
答案1
ssh -L9999:mysqlserver.com:3306 [email protected]
然后告诉你的 MySQL Gui 连接到 localhost:9999
答案2
我认为 50% 的解决方案是使用 -Y ssh 选项,假设主机具有您想要的 GUI。
来自 ssh 手册页:
-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls.
因此从您的 PC/Mac
ssh -Y [email protected]
然后当你在 thehost.com 上
[email protected]> /usr/bin/mysql-query-browser
并添加 mysqlserver.com 信息。应将 mysql 浏览 UI 引导回您的 Mac/PC。
答案3
在 Mac 上,Sequel pro 默认允许您执行此操作,但我仍在寻找 Windows GUI 客户端来执行此操作。
答案4
假设 MySQL 在标准 3306 端口上,您只需在 Unix/OSX 上发出此命令:
ssh -L3306:localhost:3306 username@host
然后您使用 GUI 连接到本地主机。