2017-08-24 111 views
0

這個問題之前已經被問過了,但是他們的答案並沒有幫助我。將.NET應用程序連接到MySQL

我不是一個Web開發人員,我以前沒有使用過MySQL。我需要在線數據庫只是爲了一個簡單的任務,現在並不重要。所以,我想將我的VB.NET應用程序連接到mySQL。

我正在使用免費託管https://host-ed.net/,這使我只能創建一個對我來說足夠的MySQL數據庫。他們向我提供了cPanel,我在其中創建了名爲「db_clients」的mySql數據庫。之後,我創建了2個用戶,一個用於我的客戶「db_client」,另一個用於我(所有者)「db_owner」。

db_client只有privilage做「SELECT」
的db_owner已privilage盡一切與數據庫

基本上,我會給我的客戶應用程序將只查詢在線數據庫,並檢查如果一列包含真或假。所以,從客戶端應用程序我想連接到與MySQL數據庫Uid=db_client

我已經下載並導入了.NET的MySQL連接器。我現在遇到的麻煩是遠程連接到實際的數據庫。即使使用「localhost」,我也無法訪問數據庫。 我使用phpMyAdmin(工具)來自定義數據庫。你能告訴我,我應該怎樣搜索,在什麼地方搜索以找到鏈接字符串中參數Server的正確值。

我已經找到的是:在phpMyAdmin的網站,我去首頁 - >選擇選項卡的「變量」 - >在搜索欄中鍵入「主機名」和它返回f5.host-ed.me。 之後,我打開了CMD,然後ping了那個主機並獲得了一個IP。接下來我應該做什麼?

這是我目前的VB.NET代碼:

Imports MySql.Data.MySqlClient 

Public Class Form1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim conn As New MySqlConnection 
    Dim myConString As String 

    myConString = "Server=46.105.118.169; Port=3306; Database=db_clients; Uid=db_client; Pwd=somepass; Charset=latin1;" 

    Try 
     conn.ConnectionString = myConString 
     conn.Open() 

     Debug.Print("conn successfully opened") 

     conn.Close() 
    Catch ex As MySqlException 
     Select Case ex.Number 
      Case 0 
       MessageBox.Show("cannot connect to server. Contact admin!") 
      Case 1045 
       MessageBox.Show("Invalid username/password!") 
     End Select 
     MessageBox.Show(ex.Message) 
    End Try 
End Sub 
End Class 

這是結果我得到的,當我按下按鈕:

enter image description here

錯誤:1042 SQLSTATE:08S01(ER_BAD_HOST_ERROR )

消息:無法獲取您的地址的主機名稱

我是否需要授予訪問特定IP以訪問我的數據庫? 如果答案是肯定的,那麼是否有解決方法?我不想將IP手動添加到白名單。

+0

您可能需要將您嘗試連接的IP地址列入白名單。 –

回答

2

您是否試圖從本地PC連接到遠程數據庫?這在大部分託管計劃中都是不允許的。通常,要訪問遠程數據庫,必須在服務器端編寫一個應用程序來管理實際的數據庫訪問並將請求(例如REST-API)發送到該中間件,該中間件隨後將與您的數據庫交談。在服務器端,您的數據庫可以直接從本地主機訪問,如主機手冊中所述。

+0

我想通過我的應用程序將我的數據庫公開給我遍佈世界各地的客戶。 – lowarago

+0

是的,我明白了,但您正在使用託管商的免費計劃。由於安全原因,大多數主機不允許公衆訪問MySQL數據庫。如果你想讓數據庫公開,你必須編寫一箇中間件來訪問它。 – Jan

+0

http://host-ed.net/web-hosting.php你能在這裏找到什麼可能是我的問題的原因? – lowarago

相關問題