Menyambung ke MySQL dari .NET melalui Perpustakaan SSH.NET
Membina aplikasi web yang mengakses pangkalan data MySQL jauh melalui sambungan SSH memerlukan penggunaan perpustakaan seperti Renci.SshNet.dll dan mysql-connector-net-6.9.7. Artikel ini meneroka cara untuk mengatasi cabaran dalam menyambung ke MySQL menggunakan perpustakaan ini.
Masalah:
Kod C# yang disediakan gagal untuk mendapatkan data daripada pangkalan data MySQL pada alat kawalan jauh pelayan melalui sambungan SSH.
Penyelesaian:
Isunya terletak pada penggunaan tetapan Pelayan dan Port yang tidak betul dalam rentetan sambungan MySQL. Berikut ialah versi yang diperbetulkan:
<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>
Dengan menetapkan Pelayan kepada alamat sambungan SSH dan menukar Port kepada 22, sambungan diwujudkan melalui SSH dan operasi pangkalan data seterusnya boleh berjaya.
Nota Tambahan:
Dalam kod yang diperbetulkan, objek ForwardedPortLocal digunakan untuk pemajuan port antara 3306 (port MySQL) pada 127.0.0.1 dan 127.0.0.1:22. Ini membolehkan klien MySQL tempatan menyambung ke pangkalan data MySQL jauh melalui terowong SSH pada port 22.
Penyelesaian yang disediakan menganggap pelayan MySQL sedang mendengar pada port 3306 pada hos jauh. Jika pelayan MySQL anda mendengar pada port lain, pastikan anda melaraskan kod tersebut dengan sewajarnya.
Atas ialah kandungan terperinci Mengapa kod C# saya gagal menyambung ke pangkalan data MySQL jauh melalui SSH, dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!