通过 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中文网其他相关文章!