2014-09-05 149 views
-1

我已经写了一个奇妙的c#应用程序,它使用到mySQL数据库的连接。当应用程序正在开发中时,我只是在本地机器上运行mySQL服务器的实例,并且c#应用程序将在本地连接。现在是时候将数据库传输到位于远程的服务器上,该服务器也在运行mySQL服务器的一个实例。如何远程连接到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

如果你把mysql放到端口22上,那么你将无法再ssh进入服务器。不要这样做。打开端口3306,这是mysql的标准tcp端口。 – 2014-09-05 15:39:03

+0

MySQL工作台不支持通过SSH上的标准TCP/IP进行连接。你不需要额外的软件来创建隧道。 – lihao 2014-09-06 01:20:07

回答

1

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

你有三个选择:

  1. 让您的客户端通过ssh连接端口22,并在通道的MySQL连接。
  2. 将两台机器放在同一个VPN上,这样即使它们很远,它们似乎也具有本地连接。
  3. 编写某种Web服务以仲裁两者和现场数据库连接。

第三个是复杂而沉重的任务,除非它是一个很大的应用程序,并且您拥有大量资源,否则不是您想要考虑的事情。我会从第一个开始,然后转向第二个,如果你想要一些更坚实和灵活的东西。

要让选项1启动并运行,您不应该在服务器上安装任何额外的东西。查看是否可以SSH到远程机器(如果您使用的是Windows,则使用客户端的putty;如果使用的是Linux,则使用客户端命令行的ssh)。如果可以登录,则需要查看文档中的端口转发:基本上,您需要将某个本地端口(例如8306)转发到远程端的端口3306。完成之后,您将保持ssh运行,并告诉您的客户端应用程序连接到localhost:8306。它会奇迹般地将所有(加密的)ssh隧道传送到远端的3306端口(MySQL服务器)。

+0

我想做选项#1。有什么方法可以帮助我完成这个任务吗?有一些我需要的连接字符串类型吗?我想避免安装像putty这样的第三方软件,因为我没有远程服务器上的完全管理权限。 – 2014-09-05 15:54:57

+0

@JohnAugust我已经编辑了答案,以提供更多的细节。 – 2014-09-05 15:59:11

+0

@JohnAugust如果有帮助,请点击打勾选择答案。 – 2014-09-05 16:23:34