【问题标题】:How to connect to Remote Mysql server that requires SSH?如何连接到需要 SSH 的远程 Mysql 服务器?
【发布时间】:2013-07-16 07:08:47
【问题描述】:

不确定这是问这个问题的地方,但我正在尝试连接到我可以完全访问的服务器。我可以从 Web 登录到 phpMyAdmin,但是当我尝试从 C# 连接到它时,它不起作用。它特别显示以下错误:

无法连接到任何指定的mysql主机

这是我正在使用的连接字符串:

string mycon = "server=someIP;port=3306;uid=user;pwd=pwd;database=mydb;Convert Zero Datetime=True";

我认为这是因为服务器需要 SSH。有什么方法可以禁用连接的 SSH 要求?

【问题讨论】:

  • 您是否检查过以确保防火墙没有阻止端口 3306?转到yougetsignal.com/tools/open-ports 并确保端口对公众开放。
  • 嗯,我不明白。当我为服务器和我的 IP 测试它时,它显示端口已关闭。那我怎么能通过 phpmyadmin 访问呢?
  • 哦,等等,服务器实际上在 Intranet 上,所以从在线服务器上看不到它。我可以手动检查吗?在测试监听端口时,我可以看到那里的端口,但我不确定它是否打开......等等
  • telnet someIP 3306 如果你得到一个连接(即使你不能做任何事情)端口是开放的。连接失败意味着它已关闭。
  • 嗯,说unable to connect to remote host: Connection refused

标签: c# mysql ssh ftp


【解决方案1】:

如果 3306 端口关闭,您将无法从远程主机连接。 PHPmyadmin 之所以有效,是因为它与 mysql 服务器(我假设)在同一台机器上运行,因此它没有从远程主机连接。您需要打开 3306 端口并将 mysql 配置为监听 3306 端口,或者您提到您有 ssh,这会打开另一个选项。

如果您无法向公众开放 3306,您可以创建一个到服务器的 ssh 隧道,将 mysql 服务器上的 3306 转发到本地计算机上的某个端口(如 3307),然后配置 C# 进行连接到那个本地端口。

string mycon = "server=localhost;port=3307;uid=user;pwd=pwd;database=mydb;Convert Zero Datetime=True";

这是一个如何使用 putty 转发端口的示例。 http://www.cs.uu.nl/technical/services/ssh/putty/puttyfw.html

此外,检查 ip 上开放端口的最简单方法是使用端口扫描器,如 nmap。我假设你在 Windows 上,因为你使用的是 C#。 这里有windows gui客户端:http://nmap.org/zenmap/

【讨论】:

    【解决方案2】:

    我终于通过更改my.cnf中的mysql配置解决了问题

    以前是这样的:

    绑定地址 = 127.0.0.1

    我把它改成了

    绑定地址 = 0.0.0.0

    重启mysql服务,一切正常:)

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2016-02-13
      • 2018-12-04
      • 2014-05-03
      • 2020-06-17
      • 1970-01-01
      • 2011-04-16
      • 2019-09-15
      • 1970-01-01
      相关资源
      最近更新 更多