透過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中文網其他相關文章!