【问题标题】:Unable to connect to remote mySQL database无法连接到远程 mySQL 数据库
【发布时间】:2023-04-01 09:37:01
【问题描述】:

我一直在尝试以下代码来尝试连接到我在数字海洋上托管的远程数据库。

    MySqlConnection myConnection = new MySqlConnection("Server = 104.236.197.146; Port = 3306; Database = BattleRoyale; Uid = root; Pwd = password");
    try
    {
        myConnection.Open();
    }
    catch (Exception e)
    {
        MessageBox.Show( e.ToString(), "Database connection error" , MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

每当我尝试运行此代码时,我都会收到以下错误:

MySql.Data.MySqlClient.MySqlException (0x80004005):无法连接到任何指定的 MySql 主机。

我认为问题出在托管数据库上。我尝试了以下方法:

将所有权限授予 . 到 root@"%" 由 'rootPass' 识别;

我一直在尝试检查是否启用了 TCP/IP,但我无法通过 phpMyAdmin 找到它,也无法通过 putty 或其他任何东西。

如您所知,我对 Linux 机器知之甚少,我只是想连接到这个数据库来完成一个学校项目。谁知道我为解决这个问题做了什么。任何帮助将不胜感激。

【问题讨论】:

  • 服务器是否可以从您的位置访问?尝试 ping 它。如果 ping 成功,您还可以尝试使用套接字来建立与 ip/port 的 tcp/ip 连接,以确保另一端有人在监听...
  • 如果您允许来自所有主机 '%' 的连接,并不一定意味着它允许删除连接。尝试 telnet 104.236.197.146 3306 看看是否可以连接。我认为问题只在这里。如果无法连接,则需要在防火墙中启用该端口。
  • 尝试 telnet 到您正在使用的服务器和端口,看到您实际上可以建立连接 - 排除防火墙
  • 尝试打开 104.236.197.146 3306 并出现错误,它只是显示“连接失败”,有什么想法可以尝试下一步吗?
  • @KrishnanduSarkar ... 或确保 MySQL 侦听正确的公共 IP 地址。虽然在很多情况下它是防火墙,但最近这对我来说一直是个问题。

标签: c# mysql phpmyadmin ubuntu-12.04


【解决方案1】:

可能的原因包括:

  1. MySQL 配置为仅侦听“localhost”或 127.0.0.1 - 这根本不允许远程连接,无论防火墙配置如何
  2. 防火墙可能配置为不允许端口 3306 上的通信通过
  3. MySQL 可能不在标准端口 3306 上运行,而是在其他一些端口上运行

很可能是 1. 或 2. 尤其是 1. 是你一开始没有想到的。

请注意,许多托管商不允许从他们自己的网络之外访问数据库。这就是为什么 PhpMySQL 经常可以工作,而远程连接却不行的原因。

【讨论】:

  • 我必须采取哪些步骤来修复 1 和 2?请记住,我是 Linux 机器的新手。
  • 对于第 1 步:打开 my.cnf 文件(不确定它在您的安装位置,但您会发现 - 可能在 /etc 或 /etc/mysql 中)并检查 @987654321 @ 选项。详见手册。第 2 步:在 superuser.com 上提出该问题,因为这与本网站无关。
  • 感谢您的帮助。对此,我真的非常感激。将绑定地址更改为 0.0.0.0,现在我的 C# 代码可以连接。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 2013-05-07
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多