>  기사  >  데이터 베이스  >  내 C# 코드가 SSH를 통해 원격 MySQL 데이터베이스에 연결하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 C# 코드가 SSH를 통해 원격 MySQL 데이터베이스에 연결하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 02:42:28781검색

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

SSH.NET 라이브러리를 통해 .NET에서 MySQL에 연결

SSH 연결을 통해 원격 MySQL 데이터베이스에 액세스하는 웹 애플리케이션을 구축하려면 다음을 사용해야 합니다. 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를 통해 연결이 설정되고 후속 데이터베이스 작업이 성공할 수 있습니다.

추가 참고 사항:

수정된 코드에서 ForwardedPortLocal 개체는 127.0.0.1과 127.0.0.1:22의 3306(MySQL 포트) 사이의 포트 전달에 사용됩니다. 이를 통해 로컬 MySQL 클라이언트는 포트 22의 SSH 터널을 통해 원격 MySQL 데이터베이스에 연결할 수 있습니다.

제공된 솔루션은 MySQL 서버가 원격 호스트의 포트 3306에서 수신 대기하고 있다고 가정합니다. MySQL 서버가 다른 포트에서 수신하는 경우 이에 따라 코드를 조정해야 합니다.

위 내용은 내 C# 코드가 SSH를 통해 원격 MySQL 데이터베이스에 연결하지 못하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.