Maison >base de données >tutoriel mysql >Pourquoi mon code C# ne parvient-il pas à se connecter à une base de données MySQL distante via SSH, et comment puis-je y remédier ?

Pourquoi mon code C# ne parvient-il pas à se connecter à une base de données MySQL distante via SSH, et comment puis-je y remédier ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 02:42:28829parcourir

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

Connexion à MySQL à partir de .NET via la bibliothèque SSH.NET

La création d'applications Web qui accèdent à des bases de données MySQL distantes via des connexions SSH nécessite l'utilisation de bibliothèques comme Renci.SshNet.dll et mysql-connector-net-6.9.7. Cet article explique comment surmonter les difficultés liées à la connexion à MySQL à l'aide de ces bibliothèques.

Problème :

Le code C# fourni ne parvient pas à récupérer les données de la base de données MySQL sur le serveur distant. serveur via une connexion SSH.

Solution :

Le problème réside dans l'utilisation incorrecte des paramètres du serveur et du port dans la chaîne de connexion MySQL. Voici la version corrigée :

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

En définissant le serveur sur l'adresse de connexion SSH et en modifiant le port sur 22, la connexion est établie via SSH et les opérations de base de données ultérieures peuvent réussir.

Notes supplémentaires :

Dans le code corrigé, un objet ForwardedPortLocal est utilisé pour la redirection de port entre 3306 (port MySQL) sur 127.0.0.1 et 127.0.0.1:22. Cela permet au client MySQL local de se connecter à la base de données MySQL distante via le tunnel SSH sur le port 22.

La solution fournie suppose que le serveur MySQL écoute sur le port 3306 de l'hôte distant. Si votre serveur MySQL écoute sur un autre port, assurez-vous d'ajuster le code en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn