首頁  >  文章  >  資料庫  >  為什麼我的 C# 程式碼無法透過 SSH 連接到遠端 MySQL 資料庫,如何修復它?

為什麼我的 C# 程式碼無法透過 SSH 連接到遠端 MySQL 資料庫,如何修復它?

Patricia Arquette
Patricia Arquette原創
2024-10-30 02:42:28781瀏覽

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:222 之間進行連接埠轉送。這允許本機 MySQL 用戶端透過連接埠 22 上的 SSH 隧道連接到遠端 MySQL 資料庫。

提供的解決方案假設 MySQL 伺服器正在偵聽遠端主機上的連接埠 3306。如果您的 MySQL 伺服器偵聽不同的端口,請務必相應地調整程式碼。

以上是為什麼我的 C# 程式碼無法透過 SSH 連接到遠端 MySQL 資料庫,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn