2013-09-05 2 views
0

저는 Visual Basic 2010에서 작은 데스크탑 응용 프로그램을 만들고 있습니다. 그리고 만든 웹 사이트의 호스팅에서 생성 된 온라인 mysql 서버 데이터베이스에 대한 연결을 설정해야합니다 .Vb 온라인 mysql 서버 데이터베이스에 연결

난 그냥 성공할 수있는 연결을 얻으려고 노력하고있는 잠시 동안

, 그래서 디버깅 할 때 나는 그러나 나는 오류 메시지가 계속이 시도 할 수있는 다음 코드를 만들었 :

Imports MySql.Data.MySqlClient 

Public Class Form2 

Dim serverstring As String = "Server=188.121.42.33;Database=MyDatabase;User Id=MyUser;Password=password" 


Private Sub Form2_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    Dim sqlConnection As MySqlConnection = New MySqlConnection 
    sqlConnection.ConnectionString = serverstring 

    Try 
     If sqlConnection.State = ConnectionState.Closed Then 
      sqlConnection.Open() 
      MsgBox("Sucessfull") 
     Else 
      sqlConnection.Close() 
      MsgBox("Connection failed") 
     End If 
    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
End Sub 

End Class 

가 나는 것 누군가가 나에게 충고를 주거나 내가 잘못하고있는 것을 발견 할 수 있다면 매우 유용 할 것입니다. 디버깅 할 때 발생하는 오류 :

Mysql.data.MySqlClient.MySqlException (0x80004005) : 지정한 MySQL 호스트 중 하나에 연결할 수 없습니다.

다시 한번 감사드립니다.

+0

첫 번째 추측은 방화벽입니다. – cHao

+0

제안 해 주셔서 감사합니다. 방화벽을 사용 중지했지만 여전히 동일한 오류가 발생합니다. – Aaron

+0

문제가 해결되었습니다 :) 감사합니다. – Aaron

답변

1

"방화벽을 해제했지만 여전히 같은 오류가 발생합니다." 당신과 당신의 목적지 사이에 퍼스널 방화벽보다 훨씬 더 많은 필터링이 이루어지며, 그 중 어느 것도 당신이 직접 비활성화/변경할 수 없습니다.

예제에서 서버 IP가 연결하려는 경우 cHao에 언급 된 것처럼 필터링/방화벽 문제 일 가능성이 큽니다. SQL 서버의 기본 연결 포트는 TCP/1433, 및 188.121.42.33의 빠른 포트 스캔을 기반으로, 호스트는 TCP/1433에 연결을 수락하지 않는 것입니다 :

> nc -vv 188.121.42.33 1433 
nc: connect to 188.121.42.33 port 1433 (tcp) failed: Connection timed out 

을 ... 그리고 ...

> nmap -O 188.121.42.33 
Starting Nmap 6.25 (http://nmap.org) at 2013-09-05 22:01 ric 
Nmap scan report for n1nlsmysqladm01.shr.prod.ams1.secureserver.net (188.121.42.33) 
Host is up (0.068s latency). 
Not shown: 983 filtered ports 
PORT  STATE SERVICE 
80/tcp closed http 
113/tcp closed ident 
443/tcp closed https 
1248/tcp open hermes 
1720/tcp open H.323/Q.931 
6000/tcp closed X11 
6001/tcp closed X11:1 
6002/tcp closed X11:2 
6003/tcp closed X11:3 
6004/tcp closed X11:4 
6005/tcp closed X11:5 
6006/tcp closed X11:6 
6007/tcp closed X11:7 
6009/tcp closed X11:9 
6025/tcp closed x11 
6059/tcp closed X11:59 
7001/tcp closed afs3-callback 

간단히 대답하면 소스/대상 간 현재 허용 된 트래픽을 기반으로 연결할 수 없습니다. 이 기능을 사용하려면 tcp/1433 트래픽이 흐르는 호스트에 대한 일종의 VPN 연결이 필요할 것입니다.

+0

MySQL은 기본적으로 포트 3306을 사용합니다. 여전히 열려있는 포트의 목록에있는 것 같지 않으므로 대부분의 대답은 여전히 ​​유효합니다. – cHao

+0

대단히 고맙습니다. 문제는 이제 mysql 서버 데이터베이스가 직접 액세스를 허용하지 않도록 설정 되었기 때문에 해결되었습니다. – Aaron

+0

@cHao 예, 제 상태가 좋았습니다. SQL Server 기반으로 가정했습니다. VB 코드. – admdrew

2

일반적으로 호스트 측에서 모든 IP를 mysql에 연결할 수 없기 때문에 발생합니다. 호스팅 측면에 %를 추가하십시오. 작동하지 않으면 mysql에 가서이 스크립트를 실행해야한다.

GRANT ALL ON. ~에 '%'IDENTIFIED BY 'password';

위의 스크립트는 여전히 작동하지 않는 경우 모든 IP 주소가 mysql에 액세스 할 수 있도록 허용합니다. 이는 호스트 공급자 방화벽이 엄격하고 내 제안에 VPS가 필요하다는 것을 의미합니다.

행운을 빌어 요.

관련 문제