Heim  >  Artikel  >  Datenbank  >  Warum kann mein C#-Code keine Verbindung zu einer Remote-MySQL-Datenbank über SSH herstellen und wie kann ich das Problem beheben?

Warum kann mein C#-Code keine Verbindung zu einer Remote-MySQL-Datenbank über SSH herstellen und wie kann ich das Problem beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 02:42:28778Durchsuche

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

Herstellen einer Verbindung zu MySQL von .NET über die SSH.NET-Bibliothek

Das Erstellen von Webanwendungen, die über SSH-Verbindungen auf entfernte MySQL-Datenbanken zugreifen, erfordert die Verwendung von Bibliotheken wie Renci.SshNet.dll und mysql-connector-net-6.9.7. In diesem Artikel wird untersucht, wie Sie Herausforderungen bei der Verbindung mit MySQL mithilfe dieser Bibliotheken überwinden können.

Problem:

Der bereitgestellte C#-Code kann keine Daten aus der MySQL-Datenbank auf der Fernbedienung abrufen Server über eine SSH-Verbindung.

Lösung:

Das Problem liegt in der falschen Verwendung der Server- und Porteinstellungen in der MySQL-Verbindungszeichenfolge. Hier ist die korrigierte Version:

<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>

Indem Sie den Server auf die SSH-Verbindungsadresse einstellen und den Port auf 22 ändern, wird die Verbindung über SSH hergestellt und nachfolgende Datenbankvorgänge können erfolgreich sein.

Zusätzliche Hinweise:

Im korrigierten Code wird ein ForwardedPortLocal-Objekt für die Portweiterleitung zwischen 3306 (MySQL-Port) auf 127.0.0.1 und 127.0.0.1:22 verwendet. Dadurch kann der lokale MySQL-Client über den SSH-Tunnel an Port 22 eine Verbindung zur Remote-MySQL-Datenbank herstellen.

Die bereitgestellte Lösung geht davon aus, dass der MySQL-Server Port 3306 auf dem Remote-Host überwacht. Wenn Ihr MySQL-Server auf einem anderen Port lauscht, passen Sie den Code unbedingt entsprechend an.

Das obige ist der detaillierte Inhalt vonWarum kann mein C#-Code keine Verbindung zu einer Remote-MySQL-Datenbank über SSH herstellen und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn