首页  >  文章  >  数据库  >  为什么我的 C# 代码无法通过 SSH 连接到远程 MySQL 数据库,如何修复它?

为什么我的 C# 代码无法通过 SSH 连接到远程 MySQL 数据库,如何修复它?

Patricia Arquette
Patricia Arquette原创
2024-10-30 02:42:28780浏览

Why does my C# code fail to connect to a remote MySQL database via SSH, and how can I fix it?

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

构建通过 SSH 连接访问远程 MySQL 数据库的 Web 应用程序需要使用Renci.SshNet.dll 和 mysql-connector-net-6.9.7 等库。本文探讨了如何克服使用这些库连接 MySQL 的挑战。

问题:

提供的 C# 代码无法从远程 MySQL 数据库检索数据

解决方案:

问题在于 MySQL 连接字符串中服务器和端口设置的使用不正确。更正后的版本如下:

<code class="csharp">MySqlConnectionStringBuilder connBuilder = new MySqlConnectionStringBuilder();
connBuilder.AllowBatch = true;
connBuilder.Server = "portal.RemoteServer.edu";
**// Change the Port to 22 (SSH connection port)**
connBuilder.Port = 22;
connBuilder.UserID = "LocalHostUserID";
connBuilder.Password = "LocalHostPassword";
connBuilder.Database = "DatabaseName";

// SSH connection details
var auth = new PasswordAuthenticationMethod("RemoteServerUsername", "RemoteServerPassword");
ConnectionInfo conInfo = new ConnectionInfo("portal.RemoteServer.edu", "RemoteServerUsername", auth);

using (SshClient client = new SshClient(conInfo))
{
    // ... (rest of the code remains the same)
}</code>

通过将Server设置为SSH连接地址,并将Port改为22,就可以通过SSH建立连接,后续的数据库操作就可以成功。

附加说明:

在更正后的代码中,使用 ForwardedPortLocal 对象在 127.0.0.1 上的 3306(MySQL 端口)和 127.0.0.1:22 之间进行端口转发。这允许本地 MySQL 客户端通过端口 22 上的 SSH 隧道连接到远程 MySQL 数据库。

提供的解决方案假设 MySQL 服务器正在侦听远程主机上的端口 3306。如果您的 MySQL 服务器侦听不同的端口,请务必相应地调整代码。

以上是为什么我的 C# 代码无法通过 SSH 连接到远程 MySQL 数据库,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

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