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>
サーバーを SSH 接続アドレスに設定し、ポートを 22 に変更すると、SSH 経由で接続が確立され、後続のデータベース操作が成功します。
追加メモ:
修正されたコードでは、127.0.0.1 の 3306 (MySQL ポート) と 127.0.0.1:22 の間のポート転送に ForwardedPortLocal オブジェクトが使用されます。これにより、ローカル MySQL クライアントはポート 22 の SSH トンネル経由でリモート MySQL データベースに接続できるようになります。
提供されるソリューションは、MySQL サーバーがリモート ホストのポート 3306 でリッスンしていることを前提としています。 MySQL サーバーが別のポートでリッスンする場合は、それに応じてコードを必ず調整してください。
以上がC# コードが SSH 経由でリモート MySQL データベースに接続できないのはなぜですか?また、それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。