gpt4 book ai didi

c# - 使用 SSH.NET 库通过 SSH 连接到 MySQL

转载 作者:可可西里 更新时间:2023-11-01 07:01:35 24 4
gpt4 key购买 nike

我得到了一个链接,可以使用此库通过 SSH 连接使用 C# 连接到 MySQL 数据库。

这是 LINK到图书馆,因为很多人会发现这很有趣,因为您不需要手动打开 SSH channel 。

这是一个非常详细的库,有很多功能,但我想做的很简单。我只想在每次写入数据库时​​打开一个 SSH channel 。

当我搜索提供的源代码时,我想到了这部分代码,可以在 TestSshCommand.cs 中找到,我想我可以将这部分用于我的连接,但我需要你的帮助才能让它正常工作,因为我有连接字符串,但我不知道如何连接所有这些字符串。

代码:

public void Test_Execute_SingleCommand()
{
using (var client = new SshClient(Resources.HOST, Resources.USERNAME, Resources.PASSWORD))
{
client.Connect();
var result = ExecuteTestCommand(client);
client.Disconnect();

Assert.IsTrue(result);
}

我连接到非 SSH channel 的代码是:

con.ConnectionString = ConfigurationManager.ConnectionStrings["Con2"].ConnectionString;
con.Open();
cmd = new MySqlCommand("SELECT COUNT(*) FROM " + ConfigSettings.ReadSetting("main"), con);

//...... more of the code

那么我如何将这段代码与上面的代码结合起来,以便它可以先打开一个 SSH channel ,然后执行我的查询?

我是否需要将我的代码放在connectdisconnect 函数中?

还有一个人认为我在引用中添加了 .dll 文件,我必须说没有任何导入工作。所以有人可以下载库并尝试这个简单的代码来查看引用是否适用于您的项目,以便每个人(很多)都可以为他们 future 的项目提供可行的解决方案吗?

编辑:

这是我稍后尝试编写的代码。我的 SSH 连接现在可以正常工作,只需将这两者结合起来即可。

问题是我需要在我的电脑上本地有一个数据库并且需要连接到服务器。所以端口转发不会像论坛上有人说的那样工作,当 mysql 已经有运行端口时我不能转发

using (var client = new SshClient("cpanel****", "******", "******"))
{
client.Connect();
con = new MySqlConnection(GetConnectionString());
con.Open();
cmd = new MySqlCommand(String.Format("insert into {0} values (null, ?Parname , ?Parname2, ?Parname3, ?Parname4, ?Parname5, ?Parname6, ?Parname7);", ConfigSettings.ReadSetting("main")), con);
cmd.Parameters.Add("?Parname", MySqlDbType.Double).Value = Math.Round(deciLat, 5);
// ... more parameters
cmd.ExecuteNonQuery();
client.Disconnect();
}

最佳答案

您只需为隧道使用与 MySQL 实例正在使用的 3306 不同的本地端口。

下面的示例使用了端口 8001:

using (var client = new SshClient("ssh_hostname", "ssh_username", "ssh_password"))
{
client.Connect();
var tunnel = new ForwardedPortLocal("127.0.0.1", 8001, "127.0.0.1", 3306);
client.AddForwardedPort(tunnel);
tunnel.Start();
using (var DB = new DBContext())
{
//MySQL interaction here!
scores = DB.Table
.Where(x => !String.IsNullOrEmpty(x.SomeField))
.ToList();
}
tunnel.Stop();
}

然后确保在你的连接字符串中你有服务器 127.0.0.1 和端口 8001

server=127.0.0.1;port=8001

这会将任何去往 127.0.0.1:8001 的内容连接到 ssh_hostname:3306。

关于c# - 使用 SSH.NET 库通过 SSH 连接到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com