首页  >  文章  >  数据库  >  如何在.NET中通过SSH.NET连接到远程MySQL数据库?

如何在.NET中通过SSH.NET连接到远程MySQL数据库?

Barbara Streisand
Barbara Streisand原创
2024-10-27 12:27:02388浏览

How to Connect to a Remote MySQL Database via SSH.NET in .NET?

通过 SSH.NET 从 .NET 连接到 MySQL

问题:

用户遇到的问题当尝试使用 MySQL Connector/NET 和 SSH.NET 库的组合通过 SSH 从位于远程服务器上的 MySQL 数据库检索数据时,会出现问题。尽管已建立 SSH 连接,但代码无法生成数据库查询结果。

解决方案:

要解决此问题,配置转发端口至关重要正确。下面的代码提供了一种改进的方法:

<code class="csharp">using(var client = new SshClient("ssh server id", "sshuser", "sshpassword")) // establish SSH connection to server hosting MySQL
{
    client.Connect();
    if (client.IsConnected)
    {
        var portForwarded = new ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306);
        client.AddForwardedPort(portForwarded);
        portForwarded.Start();
        using (MySqlConnection con = new MySqlConnection("SERVER=127.0.0.1;PORT=3306;UID=someuser;PASSWORD=somepass;DATABASE=Dbname"))
        {
            using (MySqlCommand com = new MySqlCommand("SELECT * FROM cities", con))
            {
                com.CommandType = CommandType.CommandText;
                DataSet ds = new DataSet();
                MySqlDataAdapter da = new MySqlDataAdapter(com);
                da.Fill(ds);
                foreach (DataRow drow in ds.Tables[0].Rows)
                {
                    Console.WriteLine("From MySql: " + drow[1].ToString());
                }
            }
        }
        client.Disconnect();
    }
    else
    {
        Console.WriteLine("Client cannot be reached...");
    }
}</code>

在此更新的代码中:

  • SSH 连接建立保持不变。
  • 转发端口配置为将本地端口 3306 转发到本地主机上的远程端口 3306。这可确保数据库查询通过 SSH 隧道路由。
  • 随后,将在本地端口 3306 建立 MySqlConnection,允许应用程序连接到远程 MySQL 数据库。
  • 数据库查询执行、结果处理和数据显示均以标准方式处理。

修改后的代码有效地连接到数据库、检索数据并显示它,为通过以下方式访问远程 MySQL 数据库提供了可靠的机制: .NET 应用程序中的 SSH。

以上是如何在.NET中通过SSH.NET连接到远程MySQL数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn