如何远程连接到mySQL实例?

时间:2014-09-05 15:37:33

标签: c# mysql ssh

我写了一个很棒的c#app,它使用了与mySQL数据库的连接。虽然应用程序正在开发中,但我只是在本地计算机上运行了mySQL服务器的一个实例,而c#app将在本地连接。现在是时候将数据库传输到一个也在运行mySQL服务器实例的远程服务器上。

我能够将整个数据库传输到新的服务器PC,现在我正在尝试远程连接,但遇到了多个问题。一个问题是(根据来自http://www.portcheckers.com/的测试)端口3306被阻止。 (根据pertcheckers,只有开放端口是端口22(ssh))

我对mySQL不是很好,但我想弄清楚如何建立远程连接。这是我到目前为止所尝试的:

mysql -h ***-SRVR1 -u root -p **** 

这给出了错误:

Acess denied for user 'OBDC'@'192.168.1.***

由于portcheckers说只有端口22打开,我尝试使用mySQL工作台使用“TCIP SSH”选项建立连接无济于事。

任何人都可以帮我设置此连接吗?我有远程桌面访问服务器PC,我在我想要建立连接的本地机器上。

另外,我还没有批准远程访问。我现在尝试通过远程PC并运行:

 GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

看看是否有帮助

1 个答案:

答案 0 :(得分:1)

打开端口3306进行远程访问是一个非常糟糕的主意。这太危险了。

您有三种选择:

  1. 让您的客户端通过端口22上的ssh连接,然后隧道连接MySQL。
  2. 将两台计算机放在同一个VPN上,这样即使它们相距遥远,它们似乎也有本地连接。
  3. 编写某种Web服务以在两者和字段数据库连接之间进行仲裁。
  4. 第三个是复杂而繁重的任务,除非它是一个很大的应用程序并且你有很多资源,否则你不想要考虑。我从第一个开始,然后移动到第二个,如果你想要更坚固和灵活的东西。

    要启动并运行选项1,您不必在服务器上安装任何额外的东西。查看是否可以ssh到远程计算机(如果您正在使用Windows,则使用来自客户端的putty,或者如果您使用的是Linux,则使用客户端命令行中的ssh)。如果您可以登录,那么您需要查看文档中的端口转发:基本上您需要将一些本地端口(例如,8306)转发到远程端的端口3306。完成此操作后,您将ssh保持运行状态,并告知客户端应用程序连接到localhost:8306。它会神奇地将所有内容(加密)转发到ssh隧道,并将其传递到远端的端口3306(MySQL服务器)。